QNetworkDiskCache继承自QAbstractNetworkCache,实现了基本的磁盘缓存。
QNetworkDistCache使用QDataStream把url的相关数据存储到cacheDirectory中,在insert()和updateMetaData()中被写入磁盘缓存。
当前还没有实现相同的缓存文件在不同的磁盘缓存之间共享
QNetworkDiskCache默认最大的磁盘缓存空间为50M
在进行网络访问之前要定义好缓存目录。
例如:
QNetworkAccessManager *manager = new QNetworkAccessManager(this);
QNetworkDiskCache *diskcache = new QNetworkDiskCache(this);
diskcache->setCacheDirectory("/home/test/cacheDir");
manager->setCache(diskcache);
当向服务器发送请求时,需要设置从缓存中请求数据还是从network中请求,默认是从network中请求。
例如:
QNetworkRequest request(QUrl(QString("http://qt.nokia.com")));
request.setAttribute(QNetworkRequest::CacheLoadAttribute, QNetworkRequest::PreferCache);
manager->get(request);
判断请求的数据是从Cache获取还是从network获取,可以
void replyFinished(QNetworkReply *reply) {
QVariant fromCache