将QNetworkRequest设置为始终PreferCache
Set QNetworkRequest to always PreferCache
我有一个QWebView,我已经创建了一个QNetworkDiskCache并对其进行了设置。现在我想确保所有QNetworkRequest始终使用PreferCache而不是PreferNetwork。
我该如何设置?通过似乎没有明显的方法
webView->page()->networkAccessManager()
当然,我想知道,如果我真的需要这样做,我想实现的是:我有一个自定义浏览器,它连接到一个特殊的intranet网站,我希望它几乎永久缓存服务器发送的所有图像、css和js,除非另有说明。
我该如何做到这一点?
您可以派生类QNetworkAccessManager
并重新定义其虚拟函数createRequest
,如下所示:
QNetworkReply * MyNetworkManager::createRequest(
QNetworkAccessManager::Operation operation,
const QNetworkRequest & originalRequest,
QIODevice * device)
{
QNetworkRequest request = originalRequest;
if(request.attribute(QNetworkRequest::CacheLoadControlAttribute) ==
QNetworkRequest::PreferNetwork)
{
request.setAttribute(QNetworkRequest::CacheLoadControlAttribute,
QNetworkRequest::PreferCache);
}
return QNetworkAccessManager::createRequest(operation, request, device);
}