Spec-Zone.ru › Qt 5.9

Класс QNetworkDiskCache

Класс QNetworkDiskCache предоставляет очень базовый кэш на диске. Подробнее...

Заголовок: #include <QNetworkDiskCache>
qmake: QT += network
С момента: Qt 4.5
Наследуется от: QAbstractNetworkCache
  • Список всех членов, включая унаследованные

Открытые функции

QNetworkDiskCache(QObject *parent = Q_NULLPTR)
~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
virtual QIODevice * data(const QUrl &url)
virtual void insert(QIODevice *device)
virtual QNetworkCacheMetaData metaData(const QUrl &url)
virtual QIODevice * prepare(const QNetworkCacheMetaData &metaData)
virtual bool remove(const QUrl &url)
virtual void updateMetaData(const QNetworkCacheMetaData &metaData)
  • 7 открытых функций унаследовано от QAbstractNetworkCache
  • 32 открытых функции унаследовано от QObject

Открытые слоты

virtual void clear()
  • 1 открытый слот унаследован от QAbstractNetworkCache
  • 1 открытый слот унаследован от QObject

Защищенные функции

virtual qint64 expire()
  • 9 защищенных функций унаследовано от QObject

Дополнительные унаследованные члены

  • 1 свойство унаследовано от QObject
  • 2 сигналов унаследовано от QObject
  • 11 статических открытых членов унаследовано от 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 = Q_NULLPTR)

Создаёт новый кэш на диске. Аргумент parent передаётся конструктору QAbstractNetworkCache.

QNetworkDiskCache::~QNetworkDiskCache()

Уничтожает объект кэша. Это не очищает кэш на диске.

QString QNetworkDiskCache::cacheDirectory() const

Возвращает местоположение, где будут храниться файлы кэша.

См. также setCacheDirectory().

[virtual] qint64 QNetworkDiskCache::cacheSize() const

Переопределено из QAbstractNetworkCache::cacheSize().

[virtual slot] void QNetworkDiskCache::clear()

Переопределено из QAbstractNetworkCache::clear().

[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 будет недействительной.

[virtual] void QNetworkDiskCache::insert(QIODevice *device)

Переопределено из QAbstractNetworkCache::insert().

qint64 QNetworkDiskCache::maximumCacheSize() const

Возвращает текущий максимальный размер кэша на диске.

См. также setMaximumCacheSize().

[virtual] QNetworkCacheMetaData QNetworkDiskCache::metaData(const QUrl &url)

Переопределено из QAbstractNetworkCache::metaData().

[virtual] QIODevice *QNetworkDiskCache::prepare(const QNetworkCacheMetaData &metaData)

Переопределено из QAbstractNetworkCache::prepare().

[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().

[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.9/qnetworkdiskcache.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API