我试图强制刷新HTTP请求。我知道我可以在URL中追加?rnd = seconds_since_epoch,但是相关URL可能已经有了一个查询字符串,我不想破坏它。是否有可以强制刷新的标题?强制HTTP请求不缓存
编辑:
进行实验多一点:一个我测试的页面是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标头时间戳内,则从缓存中提取。
我会离开这里来为下一个人节省很多头痛。
你可以选择从web.config,Global.asax等中禁用,为什么你想只从标题禁用缓存? – shanky
如果URL中已经有查询,可以在查询部分追加'&rnd = seconds_sine_epoch'。如果没有,查询部分将是'?rnd = seconds_sine_epoch'。 –