QNetworkDiskCache Class
La classe QNetworkDiskCache fournit un cache disque très basique. Plus d'informations...
| En-tête : | #include <QNetworkDiskCache> |
| CMake : | find_package(Qt6 REQUIRED COMPONENTS Network)target_link_libraries(mytarget PRIVATE Qt6::Network) |
| qmake : | QT += network |
| Hérite : | QAbstractNetworkCache |
Fonctions publiques
| QNetworkDiskCache(QObject *parent = nullptr) | |
| virtual | ~QNetworkDiskCache() |
| QString | cacheDirectory() const |
| QNetworkCacheMetaData | fileMetaData(const QString &fileName) const |
| qint64 | maximumCacheSize() const |
| void | setCacheDirectory(const QString &cacheDir) |
| void | setMaximumCacheSize(qint64 size) |
Fonctions publiques réimplémentées
| virtual qint64 | cacheSize() const override |
| virtual QIODevice * | data(const QUrl &url) override |
| virtual void | insert(QIODevice *device) override |
| virtual QNetworkCacheMetaData | metaData(const QUrl &url) override |
| virtual QIODevice * | prepare(const QNetworkCacheMetaData &metaData) override |
| virtual bool | remove(const QUrl &url) override |
| virtual void | updateMetaData(const QNetworkCacheMetaData &metaData) override |
Emplacements publics
| virtual void | clear() override |
Fonctions protégées
| virtual qint64 | expire() |
Description détaillée
QNetworkDiskCache stocke chaque url dans son propre fichier à l'intérieur de cacheDirectory en utilisant QDataStream. Les fichiers ayant un MimeType texte sont compressés à l'aide de qCompress. Les données sont écrites sur le disque uniquement dans insert() et updateMetaData().
Actuellement, vous ne pouvez pas partager les mêmes fichiers de cache avec plus d'un cache disque.
QNetworkDiskCache limite par défaut l'espace utilisé par le cache sur le système à 50 Mo.
Notez que vous devez définir le répertoire du cache avant qu'il ne fonctionne.
Un cache de disque réseau peut être activé par :
QNetworkAccessManager *manager = new QNetworkAccessManager(this); QNetworkDiskCache *diskCache = new QNetworkDiskCache(this); QString directory = QStandardPaths::writableLocation(QStandardPaths::CacheLocation) + QLatin1StringView("/cacheDir/"); diskCache->setCacheDirectory(directory); manager->setCache(diskCache);
Lors de l'envoi de requêtes, pour contrôler la préférence entre l'utilisation du cache et l'utilisation du réseau, tenez compte des éléments suivants :
using namespace Qt::StringLiterals; // do a normal request (preferred from network, as this is the default) QNetworkRequest request(QUrl(u"http://qt-project.org"_s)); manager->get(request); // do a request preferred from cache QNetworkRequest request2(QUrl(u"http://qt-project.org"_s)); request2.setAttribute(QNetworkRequest::CacheLoadControlAttribute, QNetworkRequest::PreferCache); manager->get(request2);
Pour vérifier si la réponse provient du cache ou du réseau, on peut appliquer ce qui suit :
void replyFinished(QNetworkReply *réponse) { QVariant fromCache = reply->attribute(QNetworkRequest::SourceIsFromCacheAttribute) ; qDebug() << "page from cache?" << fromCache.toBool(); }
Documentation des fonctions membres
[explicit] QNetworkDiskCache::QNetworkDiskCache(QObject *parent = nullptr)
Crée un nouveau cache disque. L'argument parent est transmis au constructeur de QAbstractNetworkCache.
[virtual noexcept] QNetworkDiskCache::~QNetworkDiskCache()
Détruit l'objet cache. Cela n'efface pas le cache du disque.
QString QNetworkDiskCache::cacheDirectory() const
Renvoie l'emplacement où les fichiers mis en cache seront stockés.
Voir aussi setCacheDirectory().
[override virtual] qint64 QNetworkDiskCache::cacheSize() const
Réimplémente : QAbstractNetworkCache::cacheSize() const.
[override virtual slot] void QNetworkDiskCache::clear()
Réimplémente : QAbstractNetworkCache::clear().
[override virtual] QIODevice *QNetworkDiskCache::data(const QUrl &url)
Réimplémente : QAbstractNetworkCache::data(const QUrl &url).
[virtual protected] qint64 QNetworkDiskCache::expire()
Nettoie le cache de manière à ce que sa taille soit inférieure à la taille maximale du cache. Renvoie la taille actuelle du cache.
Lorsque la taille actuelle du cache est supérieure à maximumCacheSize(), les fichiers de cache les plus anciens sont supprimés jusqu'à ce que la taille totale soit inférieure à 90 % de maximumCacheSize(), en commençant par les plus anciens et en utilisant la date de création du fichier pour déterminer l'ancienneté d'un fichier de cache.
Les sous-classes peuvent réimplémenter cette fonction pour modifier l'ordre dans lequel les fichiers de cache sont supprimés en tenant compte des informations que l'application connaît et que QNetworkDiskCache ne connaît pas, par exemple le nombre d'accès au cache.
Remarque : les appels àcacheSize() expirent si la taille actuelle du cache est inconnue.
Voir également maximumCacheSize() et fileMetaData().
QNetworkCacheMetaData QNetworkDiskCache::fileMetaData(const QString &fileName) const
Renvoie l'adresse QNetworkCacheMetaData pour le fichier cache fileName.
Si fileName n'est pas un fichier cache, QNetworkCacheMetaData sera invalide.
[override virtual] void QNetworkDiskCache::insert(QIODevice *device)
Réimplémente : QAbstractNetworkCache::insert(QIODevice *device).
qint64 QNetworkDiskCache::maximumCacheSize() const
Renvoie la taille maximale actuelle du cache disque.
Voir aussi setMaximumCacheSize().
[override virtual] QNetworkCacheMetaData QNetworkDiskCache::metaData(const QUrl &url)
Réimplémente : QAbstractNetworkCache::metaData(const QUrl &url).
[override virtual] QIODevice *QNetworkDiskCache::prepare(const QNetworkCacheMetaData &metaData)
Réimplémente : QAbstractNetworkCache::prepare(const QNetworkCacheMetaData &metaData).
[override virtual] bool QNetworkDiskCache::remove(const QUrl &url)
Réimplémente : QAbstractNetworkCache::remove(const QUrl &url).
void QNetworkDiskCache::setCacheDirectory(const QString &cacheDir)
Définit le répertoire dans lequel les fichiers mis en cache seront stockés cacheDir
QNetworkDiskCache crée ce répertoire s'il n'existe pas.
Les éléments de cache préparés seront stockés dans le nouveau répertoire de cache lorsqu'ils seront insérés.
Voir aussi cacheDirectory() et QStandardPaths::CacheLocation.
void QNetworkDiskCache::setMaximumCacheSize(qint64 size)
Définit la taille maximale du cache disque à size.
Si la nouvelle taille est inférieure à la taille actuelle du cache, le cache appellera expire().
Voir aussi maximumCacheSize().
[override virtual] void QNetworkDiskCache::updateMetaData(const QNetworkCacheMetaData &metaData)
Réimplémente : QAbstractNetworkCache::updateMetaData(const QNetworkCacheMetaData &metaData).
© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.