[QtNetwork module]
该QNetworkDiskCache类提供了一个非常基本的磁盘缓存。More…
Methods
__init__ (self, QObject parent = None)
QString cacheDirectory (self)
int cacheSize (self)
clear (self)
QIODevice data (self, QUrl url)
int expire (self)
QNetworkCacheMetaData fileMetaData (self, QString fileName)
insert (self, QIODevice device)
int maximumCacheSize (self)
QNetworkCacheMetaData metaData (self, QUrl url)
QIODevice prepare (self, QNetworkCacheMetaData metaData)
bool remove (self, QUrl url)
setCacheDirectory (self, QString cacheDir)
setMaximumCacheSize (self, int size)
updateMetaData (self, QNetworkCacheMetaData metaData)
Detailed Description
该QNetworkDiskCache类提供了一个非常基本的磁盘缓存。
QNetworkDiskCache使用存储在它自己的文件中cacheDirectory里面每个URLQDataStream。文件与文本源MimeType使用qCompress压缩。每个缓存文件以“cache_。高速缓存“和结束” “ 。数据被写入到磁盘中只insert()和updateMetaData( ) 。
目前,您不能使用一个以上的磁盘缓存共享相同的缓存文件。
QNetworkDiskCache默认情况下限制了缓存将在系统上使用了50MB的空间量。
注意:你必须设置缓存目录之前它会工作。
:网络磁盘缓存可以通过启用
[QNetworkAccessManager](docs_qnetworkaccessmanager.html) *manager = new [QNetworkAccessManager](docs_qnetworkaccessmanager.html)(this);
QNetworkDiskCache *diskCache = new QNetworkDiskCache(this);
diskCache->setCacheDirectory("cacheDir");
manager->setCache(diskCache);
当发送请求,来控制何时使用缓存以及何时使用网络的偏好,考虑以下几点:
// do a normal request (preferred from network, as this is the default)
[QNetworkRequest](docs_qnetworkrequest.html) request([QUrl](docs_qurl.html)([QString](docs_qstring.html)("http://qt.nokia.com")));
manager->get(request);
// do a request preferred from cache
[QNetworkRequest](docs_qnetworkrequest.html) request2([QUrl](docs_qurl.html)([QString](docs_qstring.html)("http://qt.nokia.com")));
request2.setAttribute([QNetworkRequest](docs_qnetworkrequest.html).CacheLoadControlAttribute, [QNetworkRequest](docs_qnetworkrequest.html).PreferCache);
manager->get(request2);
要检查是否响应从缓存或从网络传来,下面可以应用:
void replyFinished([QNetworkReply](docs_qnetworkreply.html) *reply) {
[QVariant](docs_qvariant.html) fromCache = reply->attribute([QNetworkRequest](docs_qnetworkrequest.html).SourceIsFromCacheAttribute);
qDebug() << "page from cache?" << fromCache.toBool();
}
Method Documentation
QNetworkDiskCache.__init__ (self, QObject parent = None)
该parent的说法,如果不是没有,原因self通过Qt的,而不是PyQt的拥有。
创建一个新的磁盘缓存。该parent参数被传递给QAbstractNetworkCache的构造。
QString QNetworkDiskCache.cacheDirectory (self)
返回在缓存文件将被存储的位置。
See also setCacheDirectory( ) 。
int QNetworkDiskCache.cacheSize (self)
从重新实现QAbstractNetworkCache.cacheSize( ) 。
QNetworkDiskCache.clear (self)
这种方法也是一个Qt槽与C + +的签名void clear()
。
从重新实现QAbstractNetworkCache.clear( ) 。
QIODevice QNetworkDiskCache.data (self, QUrl url)
从重新实现QAbstractNetworkCache.data( ) 。
int QNetworkDiskCache.expire (self)
清除高速缓存中,这样它的大小是根据最大高速缓存大小。返回高速缓存的当前大小。
当缓存的当前大小大于maximumCacheSize( )旧的缓存文件将被删除,直到总大小小于90%maximumCacheSize( )开始的最早的第一个使用该文件的创建日期,以确定如何旧缓存文件。
子类可以重新实现这个函数来改变缓存文件将被删除并考虑到信息的应用程序的顺序知道了QNetworkDiskCache没有,例如的次数的高速缓存访问。
注意:cacheSize( )调用过期如果当前缓存大小是未知的。
See also maximumCacheSize()和fileMetaData( ) 。
QNetworkCacheMetaData QNetworkDiskCache.fileMetaData (self, QString fileName)
返回QNetworkCacheMetaData对于缓存文件fileName。
If fileName是不是一个缓存文件QNetworkCacheMetaData将是无效的。
QNetworkDiskCache.insert (self, QIODevice device)
从重新实现QAbstractNetworkCache.insert( ) 。
int QNetworkDiskCache.maximumCacheSize (self)
返回磁盘缓存字节当前的最大大小。
See also setMaximumCacheSize( ) 。
QNetworkCacheMetaData QNetworkDiskCache.metaData (self, QUrl url)
从重新实现QAbstractNetworkCache.metaData( ) 。
QIODevice QNetworkDiskCache.prepare (self, QNetworkCacheMetaData metaData)
从重新实现QAbstractNetworkCache.prepare( ) 。
bool QNetworkDiskCache.remove (self, QUrl url)
从重新实现QAbstractNetworkCache.remove( ) 。
QNetworkDiskCache.setCacheDirectory (self, QString cacheDir)
在那里设置缓存文件将被存储到目录cacheDir
QNetworkDiskCache将创建这个目录,如果它不存在。
制备的缓存项目将被保存在新的高速缓存目录被插入时。
See also cacheDirectory()和QDesktopServices.CacheLocation。
QNetworkDiskCache.setMaximumCacheSize (self, int size)
设置磁盘缓存是最大尺寸size以字节为单位。
如果新的尺寸越小则当前缓存大小,则缓存将调用expire( ) 。
See also maximumCacheSize( ) 。
QNetworkDiskCache.updateMetaData (self, QNetworkCacheMetaData metaData)
从重新实现QAbstractNetworkCache.updateMetaData( ) 。