PySide6.QtNetwork.QNetworkDiskCache

class QNetworkDiskCache

QNetworkDiskCache 类提供了一个非常基础的磁盘缓存。更多

PySide6.QtNetwork.QNetworkDiskCache 的继承图

概要

方法

虚拟方法

注意

本文档可能包含从C++自动翻译到Python的代码片段。我们始终欢迎对代码片段翻译的贡献。如果您发现翻译问题,您也可以通过在我们的https:/bugreports.qt.io/projects/PYSIDE上创建工单来告知我们。

详细描述

警告

本节包含从C++自动翻译到Python的代码片段,可能包含错误。

QNetworkDiskCache 将每个URL存储在其自己的文件中,位于cacheDirectory内,使用QDataStream。具有文本MimeType的文件使用qCompress进行压缩。数据仅在insert()updateMetaData()时写入磁盘。

目前,您无法与多个磁盘缓存共享相同的缓存文件。

QNetworkDiskCache 默认情况下会将缓存使用的系统空间限制为50MB。

请注意,您必须先设置缓存目录才能使其工作。

可以通过以下方式启用网络磁盘缓存:

manager = QNetworkAccessManager(self)
diskCache = QNetworkDiskCache(self)
directory = QStandardPaths.writableLocation(QStandardPaths.CacheLocation)
        + "/cacheDir/"
diskCache.setCacheDirectory(directory)
manager.setCache(diskCache)

发送请求时,为了控制何时使用缓存和何时使用网络的偏好,请考虑以下内容:

namespace = using()
# do a normal request (preferred from network, as this is the default)
request = QNetworkRequest(QUrl("http://qt-project.org"))
manager.get(request)
# do a request preferred from cache
request2 = QNetworkRequest(QUrl("http://qt-project.org"))
request2.setAttribute(QNetworkRequest.CacheLoadControlAttribute, QNetworkRequest.PreferCache)
manager.get(request2)

要检查响应是来自缓存还是网络,可以应用以下方法:

def replyFinished(reply):
    fromCache = reply.attribute(QNetworkRequest.SourceIsFromCacheAttribute)
    print("page from cache?", fromCache.toBool())
__init__([parent=None])
Parameters:

父对象QObject

创建一个新的磁盘缓存。parent 参数传递给 QAbstractNetworkCache 的构造函数。

cacheDirectory()
Return type:

字符串

返回缓存文件将存储的位置。

另请参阅

setCacheDirectory()

expire()
Return type:

整数

清理缓存,使其大小不超过最大缓存大小。返回缓存的当前大小。

当缓存当前的大小大于maximumCacheSize()时,较旧的缓存文件将被删除,直到总大小小于maximumCacheSize()的90%,首先从最旧的文件开始,使用文件创建日期来确定缓存文件的年龄。

子类可以重新实现此函数,以更改缓存文件的删除顺序,考虑到应用程序知道但QNetworkDiskCache不知道的信息,例如缓存被访问的次数。

注意

cacheSize() 如果当前缓存大小未知,则调用会过期。

fileMetaData(fileName)
Parameters:

fileName – str

Return type:

QNetworkCacheMetaData

返回缓存文件 fileNameQNetworkCacheMetaData

如果 fileName 不是缓存文件,QNetworkCacheMetaData 将无效。

maximumCacheSize()
Return type:

整数

返回当前磁盘缓存的最大大小。

另请参阅

setMaximumCacheSize()

setCacheDirectory(cacheDir)
Parameters:

cacheDir – str

设置缓存文件存储的目录为 cacheDir

QNetworkDiskCache 如果目录不存在,将会创建这个目录。

准备好的缓存项在插入时将存储在新的缓存目录中。

另请参阅

cacheDirectory() CacheLocation

setMaximumCacheSize(size)
Parameters:

size – int

将磁盘缓存的最大大小设置为size

如果新的大小小于当前缓存大小,则缓存将调用 expire()

另请参阅

maximumCacheSize()