class QNetworkDiskCache#

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

Inheritance diagram of PySide6.QtNetwork.QNetworkDiskCache

摘要#

方法#

虚方法#

注:

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

详细描述#

警告:

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

QNetworkDiskCache 使用 QDataStream 将每个 URL 存储在 cacheDirectory 中的独立文件中。文本 MIME 类型的文件使用 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])#
参数::

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

cacheDirectory()#
返回类型::

str

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

另请参阅

setCacheDirectory()

expire()#
返回类型::

int

清理缓存以使其大小低于最大缓存大小。返回缓存的当前大小。

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

子类可以重写此函数,以更改删除缓存文件的顺序,同时考虑应用程序了解的而 QNetworkDiskCache 不了解的信息,例如缓存访问的次数。

注:

cacheSize() 调用 expire 如果当前缓存大小未知。

fileMetaData(fileName)#
参数::

fileName – str

返回类型::

QNetworkCacheMetaData

返回缓存文件 fileNameQNetworkCacheMetaData

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

maximumCacheSize()#
返回类型::

int

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

另请参阅

setMaximumCacheSize()

setCacheDirectory(cacheDir)#
参数::

cacheDir – str

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

QNetworkDiskCache 将创建此目录(如果不存在)。

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

另请参阅

cacheDirectory() CacheLocation

setMaximumCacheSize(size)#
参数::

size - int

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

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

另请参阅

maximumCacheSize()