Класс 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
- 34 открытых функций унаследовано от QObject
Открытые слоты
| virtual void | clear() override |
- 1 открытый слот унаследован от QAbstractNetworkCache
- 1 открытый слот унаследован от QObject
Защищённые функции
| virtual qint64 | expire() |
- 9 защищённых функций унаследовано от QObject
Дополнительные унаследованные члены
- 1 свойство унаследовано от QObject
- 2 сигнала унаследованы от QObject
- 1 открытая переменная унаследована от QObject
- 10 статических открытых членов унаследовано от QObject
- 2 защищённых переменных унаследовано от 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/archives/qt-5.11/qnetworkdiskcache.html