QNetworkDiskCache Class
La clase QNetworkDiskCache proporciona una caché de disco muy básica. Más...
| Cabecera: | #include <QNetworkDiskCache> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Network)target_link_libraries(mytarget PRIVATE Qt6::Network) |
| qmake: | QT += network |
| Hereda: | QAbstractNetworkCache |
Funciones públicas
| 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) |
Funciones públicas reimplementadas
| 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 |
Ranuras públicas
| virtual void | clear() override |
Funciones protegidas
| virtual qint64 | expire() |
Descripción detallada
QNetworkDiskCache almacena cada url en su propio fichero dentro de cacheDirectory usando QDataStream. Los archivos con un MimeType de texto se comprimen usando qCompress. Los datos se escriben en disco sólo en insert() y updateMetaData().
Actualmente no se pueden compartir los mismos archivos de caché con más de una caché de disco.
QNetworkDiskCache por defecto limita la cantidad de espacio que la caché utilizará en el sistema a 50MB.
Ten en cuenta que tienes que establecer el directorio de caché antes de que funcione.
Un caché de disco de red puede ser habilitado por:
QNetworkAccessManager *manager = new QNetworkAccessManager(this); QNetworkDiskCache *diskCache = new QNetworkDiskCache(this); QString directory = QStandardPaths::writableLocation(QStandardPaths::CacheLocation) + QLatin1StringView("/cacheDir/"); diskCache->setCacheDirectory(directory); manager->setCache(diskCache);
Al enviar peticiones, para controlar la preferencia de cuándo utilizar la caché y cuándo utilizar la red, tenga en cuenta lo siguiente:
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);
Para comprobar si la respuesta procede de la caché o de la red, se puede aplicar lo siguiente:
void respuestaFinalizada(QNetworkReply *respuesta) { QVariant fromCache = respuesta->atributo(QNetworkRequest::SourceIsFromCacheAttribute); qDebug() << "page from cache?" << fromCache.toBool(); }
Documentación de las funciones miembro
[explicit] QNetworkDiskCache::QNetworkDiskCache(QObject *parent = nullptr)
Crea una nueva caché de disco. El argumento parent se pasa al constructor de QAbstractNetworkCache.
[virtual noexcept] QNetworkDiskCache::~QNetworkDiskCache()
Destruye el objeto caché. Esto no borra la caché de disco.
QString QNetworkDiskCache::cacheDirectory() const
Devuelve la ubicación donde se almacenarán los archivos en caché.
Véase también setCacheDirectory().
[override virtual] qint64 QNetworkDiskCache::cacheSize() const
Reimplementa: QAbstractNetworkCache::cacheSize() const.
[override virtual slot] void QNetworkDiskCache::clear()
Reimplementa: QAbstractNetworkCache::clear().
[override virtual] QIODevice *QNetworkDiskCache::data(const QUrl &url)
Reimplementa: QAbstractNetworkCache::data(const QUrl &url).
[virtual protected] qint64 QNetworkDiskCache::expire()
Limpia la caché para que su tamaño sea inferior al tamaño máximo de caché. Devuelve el tamaño actual de la caché.
Cuando el tamaño actual de la caché es mayor que maximumCacheSize() se eliminan los archivos de caché más antiguos hasta que el tamaño total es inferior al 90% de maximumCacheSize() empezando primero por los más antiguos utilizando la fecha de creación del archivo para determinar la antigüedad de un archivo de caché.
Las subclases pueden reimplementar esta función para cambiar el orden en que se eliminan los archivos de caché teniendo en cuenta información de la aplicación que QNetworkDiskCache no conoce, por ejemplo el número de veces que se accede a una caché.
Nota: Las llamadas acacheSize() caducan si se desconoce el tamaño actual de la caché.
Véase también maximumCacheSize() y fileMetaData().
QNetworkCacheMetaData QNetworkDiskCache::fileMetaData(const QString &fileName) const
Devuelve el QNetworkCacheMetaData para el archivo de caché fileName.
Si fileName no es un archivo de caché QNetworkCacheMetaData no será válido.
[override virtual] void QNetworkDiskCache::insert(QIODevice *device)
Reimplementa: QAbstractNetworkCache::insert(QIODevice *device).
qint64 QNetworkDiskCache::maximumCacheSize() const
Devuelve el tamaño máximo actual de la caché de disco.
Véase también setMaximumCacheSize().
[override virtual] QNetworkCacheMetaData QNetworkDiskCache::metaData(const QUrl &url)
Reimplementa: QAbstractNetworkCache::metaData(const QUrl &url).
[override virtual] QIODevice *QNetworkDiskCache::prepare(const QNetworkCacheMetaData &metaData)
Reimplementa: QAbstractNetworkCache::prepare(const QNetworkCacheMetaData &metaData).
[override virtual] bool QNetworkDiskCache::remove(const QUrl &url)
Reimplementa: QAbstractNetworkCache::remove(const QUrl &url).
void QNetworkDiskCache::setCacheDirectory(const QString &cacheDir)
Establece el directorio en el que se almacenarán los archivos en caché. cacheDir
QNetworkDiskCache creará este directorio si no existe.
Los elementos de caché preparados se almacenarán en el nuevo directorio de caché cuando se inserten.
Véase también cacheDirectory() y QStandardPaths::CacheLocation.
void QNetworkDiskCache::setMaximumCacheSize(qint64 size)
Establece el tamaño máximo de la caché de disco en size.
Si el nuevo tamaño es menor que el tamaño actual de la caché, ésta llamará a expire().
Véase también maximumCacheSize().
[override virtual] void QNetworkDiskCache::updateMetaData(const QNetworkCacheMetaData &metaData)
Reimplementa: 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.