QNetworkDiskCache Class
QNetworkDiskCache クラスは、非常に基本的なディスク・キャッシュを提供します。詳細...
Header: | #include <QNetworkDiskCache> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Network) target_link_libraries(mytarget PRIVATE Qt6::Network) |
qmake: | QT += network |
Inherits: | 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);
レスポンスがキャッシュから来たのか、ネットワークから来たのかをチェックするには、以下を適用することができる:
void replyFinished(QNetworkReply *reply) { QVariant fromCache = 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)
再リンプルメント: (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)。
本ドキュメントに含まれる文書の著作権は、それぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。