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) */ /* Configure caching for files downloaded from Internet by QML (e.g. os_list.json and icons) */
NetworkAccessManagerFactory::NetworkAccessManagerFactory() 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 *NetworkAccessManagerFactory::create(QObject *parent)
{ {
QNetworkAccessManager *nam = new QNetworkAccessManager(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; return nam;
} }

View file

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