- class QNetworkDiskCache#
QNetworkDiskCache
类提供了一个非常简单的磁盘缓存。更多…摘要#
方法#
def
__init__()
def
cacheDirectory()
def
fileMetaData()
虚方法#
def
expire()
注:
本文档可能包含从 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
返回缓存文件存储的位置。
另请参阅
- expire()#
- 返回类型::
int
清理缓存以使其大小低于最大缓存大小。返回缓存的当前大小。
当缓存当前大小大于
maximumCacheSize()
时,将删除较旧的缓存文件,直到总大小低于maximumCacheSize()
的 90%,从最早的文件开始,使用文件的创建日期来确定缓存文件的年龄。子类可以重写此函数,以更改删除缓存文件的顺序,同时考虑应用程序了解的而
QNetworkDiskCache
不了解的信息,例如缓存访问的次数。- fileMetaData(fileName)#
- 参数::
fileName – str
- 返回类型::
返回缓存文件
fileName
的QNetworkCacheMetaData
。如果
fileName
不是一个缓存文件,则QNetworkCacheMetaData
将无效。- maximumCacheSize()#
- 返回类型::
int
返回当前磁盘缓存的最大大小。
- setCacheDirectory(cacheDir)#
- 参数::
cacheDir – str
将缓存文件存储的目录设置为
cacheDir
QNetworkDiskCache
将创建此目录(如果不存在)。在插入时,准备好的缓存项将存储在新缓存目录中。
另请参阅
cacheDirectory()
CacheLocation
- setMaximumCacheSize(size)#
- 参数::
size - int
设置磁盘缓存的最大大小为
size
.如果新的大小小于当前的缓存大小,则缓存将调用
expire()
.另请参阅