QNetworkDiskCache#

The QNetworkDiskCache class provides a very basic disk cache. More

Inheritance diagram of PySide6.QtNetwork.QNetworkDiskCache

Synopsis#

Functions#

Virtual functions#

Note

This documentation may contain snippets that were automatically translated from C++ to Python. We always welcome contributions to the snippet translation. If you see an issue with the translation, you can also let us know by creating a ticket on https:/bugreports.qt.io/projects/PYSIDE

Detailed Description#

Warning

This section contains snippets that were automatically translated from C++ to Python and may contain errors.

QNetworkDiskCache stores each url in its own file inside of the cacheDirectory using QDataStream . Files with a text MimeType are compressed using qCompress . Data is written to disk only in insert() and updateMetaData() .

Currently you cannot share the same cache files with more than one disk cache.

QNetworkDiskCache by default limits the amount of space that the cache will use on the system to 50MB.

Note you have to set the cache directory before it will work.

A network disk cache can be enabled by:

manager = QNetworkAccessManager(self)
diskCache = QNetworkDiskCache(self)
diskCache.setCacheDirectory("cacheDir")
manager.setCache(diskCache)

When sending requests, to control the preference of when to use the cache and when to use the network, consider the following:

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

To check whether the response came from the cache or from the network, the following can be applied:

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

parentPySide6.QtCore.QObject

Creates a new disk cache. The parent argument is passed to QAbstractNetworkCache ‘s constructor.

PySide6.QtNetwork.QNetworkDiskCache.cacheDirectory()#
Return type:

str

Returns the location where cached files will be stored.

PySide6.QtNetwork.QNetworkDiskCache.expire()#
Return type:

int

Cleans the cache so that its size is under the maximum cache size. Returns the current size of the cache.

When the current size of the cache is greater than the maximumCacheSize() older cache files are removed until the total size is less then 90% of maximumCacheSize() starting with the oldest ones first using the file creation date to determine how old a cache file is.

Subclasses can reimplement this function to change the order that cache files are removed taking into account information in the application knows about that QNetworkDiskCache does not, for example the number of times a cache is accessed.

Note

cacheSize() calls expire if the current cache size is unknown.

PySide6.QtNetwork.QNetworkDiskCache.fileMetaData(fileName)#
Parameters:

fileName – str

Return type:

PySide6.QtNetwork.QNetworkCacheMetaData

Returns the QNetworkCacheMetaData for the cache file fileName.

If fileName is not a cache file QNetworkCacheMetaData will be invalid.

PySide6.QtNetwork.QNetworkDiskCache.maximumCacheSize()#
Return type:

int

Returns the current maximum size for the disk cache.

PySide6.QtNetwork.QNetworkDiskCache.setCacheDirectory(cacheDir)#
Parameters:

cacheDir – str

Sets the directory where cached files will be stored to cacheDir

QNetworkDiskCache will create this directory if it does not exists.

Prepared cache items will be stored in the new cache directory when they are inserted.

See also

cacheDirectory() CacheLocation

PySide6.QtNetwork.QNetworkDiskCache.setMaximumCacheSize(size)#
Parameters:

size – int

Sets the maximum size of the disk cache to be size.

If the new size is smaller then the current cache size then the cache will call expire() .