我正在尝试强制刷新 HTTP 请求。我知道我可以将 ?rnd=seconds_since_epoch 附加到 URL,但有问题的 URL 可能已经有一个我不想破坏的查询字符串。我可以设置一个标题来强制刷新吗?
编辑:
多做一点实验:我正在测试的页面之一是 stackoverflow.com。在 HTTP 响应中,它将 Expires 设置为请求后一分钟。浏览器似乎忽略了我正在设置的“private, no-store, max-age=0”和 Expires 标头,并将响应缓存一分钟。我不想深入研究 PyQt 网络,所以我将使用 ?rnd=seconds 方法。
这可能会破坏看到未知 GET 变量的页面吗?
编辑2:
我做了更深入的研究,结果发现 QNetworkRequest CacheLoadControl 默认值覆盖了 QWebSettings setObjectCacheCapacities()、setMaximumPagesInCache() 甚至 clearMemoryCaches()!
诀窍是将 QNetworkRequest 的 CacheLoadControl 设置为 0,或 AlwaysNetwork (http://qt-project.org/doc/qt-4.8/qnetworkrequest.html#CacheLoadControl-enum)。默认值为 1,PreferNetwork,如果缓存在 Expires 标头时间戳内,则从缓存中获取。
我将把它留在这里,以免给下一个人带来很多麻烦。