QNetworkDiskCache Class
QNetworkDiskCache クラスは、非常に基本的なディスク・キャッシュを提供します。詳細...
ヘッダー | #include <QNetworkDiskCache> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Network) target_link_libraries(mytarget PRIVATE Qt6::Network) |
qmake: | QT += network |
を継承する: | 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 |
パブリック・スロット
virtual void | clear() override |
保護された機能
virtual qint64 | expire() |
詳細説明
QNetworkDiskCache は、QDataStream を使用して、各 url をcacheDirectory 内の独自のファイルに格納します。テキストの MimeType を持つファイルは、qCompress を使用して圧縮されます。データはinsert() とupdateMetaData() でのみディスクに書き込まれます。
現在のところ、複数のディスクキャッシュで同じキャッシュファイルを共有することはできません。
QNetworkDiskCache の既定では、キャッシュがシステムで使用する容量は 50MB に制限されています。
キャッシュ・ディレクトリを設定しないと動作しないことに注意してください。
ネットワーク・ディスク・キャッシュは以下の方法で有効にできます:
QNetworkAccessManager *manager = new QNetworkAccessManager(this); QNetworkDiskCache *diskCache = new QNetworkDiskCache(this); QString directory = QStandardPaths::writableLocation(QStandardPaths::CacheLocation) + QLatin1StringView("/cacheDir/"); diskCache->setCacheDirectory(directory); manager->setCache(diskCache);
リクエストを送るときに、キャッシュを使うときとネットワークを使うとき の優先順位を制御するには、以下のようにします:
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);
レスポンスがキャッシュから来たのか、ネットワークから来たのかをチェックするには、以下のようにすればよい:
voidreplyFinished(QNetworkReply*応答){ QVariantfromCache= reply->attribute(QNetworkRequest::SourceIsFromCacheAttribute); qDebug() << "page from cache?" << fromCache.toBool(); }
メンバ関数ドキュメント
[explicit]
QNetworkDiskCache::QNetworkDiskCache(QObject *parent = nullptr)
新しいディスク・キャッシュを作成する。parent 引数はQAbstractNetworkCache のコンストラクタに渡されます。
[virtual noexcept]
QNetworkDiskCache::~QNetworkDiskCache()
キャッシュ・オブジェクトを破棄する。ディスク・キャッシュはクリアされない。
QString QNetworkDiskCache::cacheDirectory() const
キャッシュされたファイルが保存される場所を返します。
setCacheDirectory()も参照ください 。
[override virtual]
qint64 QNetworkDiskCache::cacheSize() const
再実装:QAbstractNetworkCache::cacheSize() const.
[override virtual slot]
void QNetworkDiskCache::clear()
再インプリメント:QAbstractNetworkCache::clear().
[override virtual]
QIODevice *QNetworkDiskCache::data(const QUrl &url)
再インプリメント:QAbstractNetworkCache::data(const QUrl &url).
[virtual protected]
qint64 QNetworkDiskCache::expire()
キャッシュのサイズが最大キャッシュ・サイズ以下になるようにキャッシュを削除する。キャッシュの現在のサイズを返す。
キャッシュの現在のサイズがmaximumCacheSize() より大きい場合、合計サイズがmaximumCacheSize() の 90% 未満になるまで、古いキャッシュ・ファイルから順に削除します。
サブクラスはこの関数を再実装して、キャッシュ・ファイルが削除される順序を変更できます。その際、QNetworkDiskCache が把握していないアプリケーションの情報 (キャッシュへのアクセス回数など) を考慮します。
注意: cacheSize() の呼び出しは、現在のキャッシュ・サイズが不明な場合に失効する。
maximumCacheSize() およびfileMetaData()も参照のこと 。
QNetworkCacheMetaData QNetworkDiskCache::fileMetaData(const QString &fileName) const
キャッシュ・ファイルfileName のQNetworkCacheMetaData を返す。
fileName がキャッシュ・ファイルでない場合、QNetworkCacheMetaData は無効となる。
[override virtual]
void QNetworkDiskCache::insert(QIODevice *device)
再実装:QAbstractNetworkCache::insert(QIODevice *device).
qint64 QNetworkDiskCache::maximumCacheSize() const
ディスク・キャッシュの現在の最大サイズを返す。
setMaximumCacheSize()も参照 。
[override virtual]
QNetworkCacheMetaData QNetworkDiskCache::metaData(const QUrl &url)
再インプリメント:QAbstractNetworkCache::metaData(const QUrl &url).
[override virtual]
QIODevice *QNetworkDiskCache::prepare(const QNetworkCacheMetaData &metaData)
を再実装します:QAbstractNetworkCache::prepare(const QNetworkCacheMetaData &metaData)。
[override virtual]
bool QNetworkDiskCache::remove(const QUrl &url)
再インプリメント:QAbstractNetworkCache::remove(const QUrl &url).
void QNetworkDiskCache::setCacheDirectory(const QString &cacheDir)
キャッシュされたファイルを保存するディレクトリを設定します。cacheDir
QNetworkDiskCache を指定すると、このディレクトリが存在しない場合は作成されます。
準備されたキャッシュ・アイテムが挿入されると、新しいキャッシュ・ディレクトリに格納されます。
cacheDirectory() およびQStandardPaths::CacheLocationも参照してください 。
void QNetworkDiskCache::setMaximumCacheSize(qint64 size)
size にディスク・キャッシュの最大サイズを設定する。
新しいサイズが現在のキャッシュ・サイズより小さい場合、キャッシュはexpire() を呼び出す。
maximumCacheSize()も参照 。
[override virtual]
void QNetworkDiskCache::updateMetaData(const QNetworkCacheMetaData &metaData)
を再実装します:QAbstractNetworkCache::updateMetaData(const QNetworkCacheMetaData &metaData)。
© 2025 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.