Класс QNetworkDiskCache
Класс QNetworkDiskCache предоставляет очень базовый кэш на диске. Подробнее...
| Заголовок: | #include <QNetworkDiskCache> |
| qmake: | QT += network |
| С момента: | Qt 4.5 |
| Наследует: | QAbstractNetworkCache |
Открытые функции
| 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) |
Переопределённые открытые функции
| 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 |
- 7 открытых функций унаследовано от QAbstractNetworkCache
- 31 открытых функций унаследовано от QObject
Открытые слоты
| virtual void | clear() override |
- 1 открытый слот унаследован от QAbstractNetworkCache
- 1 открытый слот унаследован от QObject
Статические открытые члены
| const QMetaObject | staticMetaObject |
- 9 статических открытых членов унаследовано от QObject
Защищённые функции
| virtual qint64 | expire() |
- 9 защищённых функций унаследовано от QObject
Дополнительные унаследованные члены
Подробное описание
Класс QNetworkDiskCache предоставляет очень базовый кэш на диске.
QNetworkDiskCache хранит каждый URL в собственном файле внутри cacheDirectory, используя QDataStream. Файлы с текстовым типом MIME сжимаются с помощью qCompress. Данные записываются на диск только в insert() и updateMetaData().
В настоящее время вы не можете совместно использовать одни и те же файлы кэша с более чем одним кэшем на диске.
QNetworkDiskCache по умолчанию ограничивает объем занимаемого кэшем места на системе до 50 МБ.
Обратите внимание, что вам необходимо установить директорию кэша, прежде чем он начнет работать.
Кэш на диске можно включить следующим образом:
QNetworkAccessManager *manager = new QNetworkAccessManager(this);
QNetworkDiskCache *diskCache = new QNetworkDiskCache(this);
diskCache->setCacheDirectory("cacheDir");
manager->setCache(diskCache); При отправке запросов для управления предпочтениями использования кэша и сети следует учесть следующее:
// do a normal request (preferred from network, as this is the default)
QNetworkRequest request(QUrl(QString("http://qt-project.org")));
manager->get(request);
// do a request preferred from cache
QNetworkRequest request2(QUrl(QString("http://qt-project.org")));
request2.setAttribute(QNetworkRequest::CacheLoadControlAttribute, QNetworkRequest::PreferCache);
manager->get(request2); Для проверки того, получен ли ответ из кэша или из сети, можно применить следующее:
void replyFinished(QNetworkReply *reply) {
QVariant fromCache = reply->attribute(QNetworkRequest::SourceIsFromCacheAttribute);
qDebug() << "page from cache?" << fromCache.toBool();
} Документация по функциям-членам
QNetworkDiskCache::QNetworkDiskCache(QObject *parent = nullptr)
Создаёт новый кэш на диске. Аргумент parent передаётся конструктору QAbstractNetworkCache.
[virtual] QNetworkDiskCache::~QNetworkDiskCache()
Удаляет объект кэша. Это не очищает кэш на диске.
QString QNetworkDiskCache::cacheDirectory() const
Возвращает расположение, где будут храниться кэшированные файлы.
См. также setCacheDirectory().
[override virtual] qint64 QNetworkDiskCache::cacheSize() const
Переопределено из QAbstractNetworkCache::cacheSize().
[override virtual slot] void QNetworkDiskCache::clear()
Переопределено из QAbstractNetworkCache::clear().
[override virtual] QIODevice *QNetworkDiskCache::data(const QUrl &url)
Переопределено из QAbstractNetworkCache::data().
[virtual protected] qint64 QNetworkDiskCache::expire()
Очищает кэш, чтобы его размер был меньше максимального размера кэша. Возвращает текущий размер кэша.
Когда текущий размер кэша больше, чем maximumCacheSize(), удаляются более старые файлы кэша до тех пор, пока общий размер не станет меньше 90% от maximumCacheSize(), начиная с самых старых, используя дату создания файла, чтобы определить, насколько стар файл кэша.
Подклассы могут переопределять эту функцию, чтобы изменить порядок удаления файлов кэша, учитывая информацию, о которой QNetworkDiskCache не знает, например, число обращений к кэшу.
Примечание: cacheSize() вызывает expire, если текущий размер кэша неизвестен.
См. также maximumCacheSize() и fileMetaData().
QNetworkCacheMetaData QNetworkDiskCache::fileMetaData(const QString &fileName) const
Возвращает QNetworkCacheMetaData для файла кэша fileName.
Если fileName не является файлом кэша, QNetworkCacheMetaData будет недействительным.
[override virtual] void QNetworkDiskCache::insert(QIODevice *device)
Переопределено из QAbstractNetworkCache::insert().
qint64 QNetworkDiskCache::maximumCacheSize() const
Возвращает текущий максимальный размер кэша на диске.
См. также setMaximumCacheSize().
[override virtual] QNetworkCacheMetaData QNetworkDiskCache::metaData(const QUrl &url)
Переопределено из QAbstractNetworkCache::metaData().
[override virtual] QIODevice *QNetworkDiskCache::prepare(const QNetworkCacheMetaData &metaData)
Переопределено из QAbstractNetworkCache::prepare().
[override virtual] bool QNetworkDiskCache::remove(const QUrl &url)
Переопределено из QAbstractNetworkCache::remove().
void QNetworkDiskCache::setCacheDirectory(const QString &cacheDir)
Устанавливает директорию для хранения кэшированных файлов в cacheDir
QNetworkDiskCache создаст эту директорию, если она не существует.
Подготовленные элементы кэша будут сохранены в новой директории кэша при их добавлении.
См. также cacheDirectory() и QDesktopServices::CacheLocation.
void QNetworkDiskCache::setMaximumCacheSize(qint64 size)
Устанавливает максимальный размер дискового кэша в size.
Если новый размер меньше текущего размера кэша, кэш вызовет expire().
См. также maximumCacheSize().
[override virtual] void QNetworkDiskCache::updateMetaData(const QNetworkCacheMetaData &metaData)
Переопределено из QAbstractNetworkCache::updateMetaData().
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.12/qnetworkdiskcache.html