我有一个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/

10-12 20:46