PySide6.QtNetwork.QNetworkDiskCache¶
- class QNetworkDiskCache¶
QNetworkDiskCache
类提供了一个非常基础的磁盘缓存。更多…概要¶
方法¶
def
__init__()
def
cacheDirectory()
def
fileMetaData()
虚拟方法¶
def
expire()
注意
本文档可能包含从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())
创建一个新的磁盘缓存。
parent
参数传递给QAbstractNetworkCache
的构造函数。- cacheDirectory()¶
- Return type:
字符串
返回缓存文件将存储的位置。
另请参阅
- expire()¶
- Return type:
整数
清理缓存,使其大小不超过最大缓存大小。返回缓存的当前大小。
当缓存当前的大小大于
maximumCacheSize()
时,较旧的缓存文件将被删除,直到总大小小于maximumCacheSize()
的90%,首先从最旧的文件开始,使用文件创建日期来确定缓存文件的年龄。子类可以重新实现此函数,以更改缓存文件的删除顺序,考虑到应用程序知道但
QNetworkDiskCache
不知道的信息,例如缓存被访问的次数。- fileMetaData(fileName)¶
- Parameters:
fileName – str
- Return type:
返回缓存文件
fileName
的QNetworkCacheMetaData
。如果
fileName
不是缓存文件,QNetworkCacheMetaData
将无效。- maximumCacheSize()¶
- Return type:
整数
返回当前磁盘缓存的最大大小。
- setCacheDirectory(cacheDir)¶
- Parameters:
cacheDir – str
设置缓存文件存储的目录为
cacheDir
QNetworkDiskCache
如果目录不存在,将会创建这个目录。准备好的缓存项在插入时将存储在新的缓存目录中。
另请参阅
cacheDirectory()
CacheLocation
- setMaximumCacheSize(size)¶
- Parameters:
size – int
将磁盘缓存的最大大小设置为
size
。如果新的大小小于当前缓存大小,则缓存将调用
expire()
。另请参阅