Maintain per-thread QNetworkDiskCache

Ref #442
This commit is contained in:
Floris Bos 2022-07-26 22:45:06 +02:00
parent e0dc78d0a5
commit 8837d7e897
2 changed files with 7 additions and 10 deletions

View file

@ -14,19 +14,16 @@
/* Configure caching for files downloaded from Internet by QML (e.g. os_list.json and icons) */
NetworkAccessManagerFactory::NetworkAccessManagerFactory()
: _nr(0)
{
_c = new QNetworkDiskCache(this);
_c->setCacheDirectory(QStandardPaths::writableLocation(QStandardPaths::CacheLocation)+QDir::separator()+"oslistcache");
/* Only cache images and not the .json */
//_c->remove(QUrl(OSLIST_URL));
/* Clear all for now as we do not know any potential subitems_url in advance */
_c->clear();
}
QNetworkAccessManager *NetworkAccessManagerFactory::create(QObject *parent)
{
QNetworkAccessManager *nam = new QNetworkAccessManager(parent);
nam->setCache(_c);
auto c = new QNetworkDiskCache(nam);
c->setCacheDirectory(QStandardPaths::writableLocation(QStandardPaths::CacheLocation)+QDir::separator()+"oslistcache"+QString::number(_nr++));
c->clear();
nam->setCache(c);
return nam;
}

View file

@ -10,14 +10,14 @@
class QNetworkDiskCache;
class NetworkAccessManagerFactory : public QObject, public QQmlNetworkAccessManagerFactory
class NetworkAccessManagerFactory : public QQmlNetworkAccessManagerFactory
{
public:
NetworkAccessManagerFactory();
virtual QNetworkAccessManager *create(QObject *parent);
protected:
QNetworkDiskCache *_c;
int _nr;
};
#endif // NETWORKACCESSMANAGERFACTORY_H