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);
응답이 캐시에서 왔는지 네트워크에서 왔는지 확인하려면 다음을 적용할 수 있습니다:
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 *장치).
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.