我正在尝试强制刷新HTTP请求。我知道我可以在URL中附加?rnd = seconds_since_epoch,但是有问题的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标头时间戳内,则从缓存中提取。
我会把它留在这里为下一个人省下很多头痛。
答案 0 :(得分:2)
Cache-Control: private, no-store, max-age=0
虽然缓存是由浏览器决定的,所以你不能保证标题有效,将Cache-Control设置为private,no-store,max-age = 0似乎对我来说效果很好。
还要确保将Expires标头设置为当前日期/时间。这就是为什么浏览器会在下一个请求中看到他们现有的内容已过期。
答案 1 :(得分:1)
我确实深入挖掘了一下,事实证明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标头时间戳内,则从缓存中提取。
我会把它留在这里为下一个人省下很多头痛。