Spec-Zone.ru › Qt 5.11

Класс 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

Spec-Zone.ru

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