我有一个QWebView,我创建了一个QNetworkDiskCache并进行了设置。现在,我想确保所有QNetworkRequests始终使用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);
}
关于c++ - 将QNetworkRequest设置为始终PreferCache,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9128863/