【问题标题】:How to prevent python urllib3 from caching response如何防止python urllib3缓存响应
【发布时间】:2012-04-13 13:54:43
【问题描述】:

我用 urllib3 连续多次轮询同一个 url。我已经分析了请求并且我得到了标题:

缓存控制:无转换,max-age=120

在第一次请求之后,我得到的是页面的缓存版本,而不是再次运行请求。我无法控制从服务器返回的标头,如何防止缓存?

我在 Debian Squeeze 上运行 python 2.6.6

pool = urllib3.HTTPConnectionPool('itunes.apple.com')
request = pool.request('GET', '/webObjects/MZStore.woa/wa/viewTop?
                       selected_tab_index=0&startIndex=0&genreId=36', 
                       headers = {'Host': 'itunes.apple.com', 
                       'Accept-Encoding': 'gzip, deflate', 'X-Apple-Tz': -18000, 
                       'X-Apple-Store-Front': '143441-1,2')

【问题讨论】:

  • 请用参数显示对 urllib3 的调用。

标签: python caching http-headers debian


【解决方案1】:

urllib3 没有内置本地缓存。您确定不是服务器响应缓存结果吗?

【讨论】:

  • 这很有可能。除了等待之外,有什么方法可以避免从服务器取回缓存的响应?
  • 这真的取决于服务器和它实现的逻辑。正如 James 下面提到的,您可以尝试发送一个 cache-control:no-cache 标头。您还可以尝试将一些查询参数附加到 URL 中,例如时间戳。
【解决方案2】:

尝试添加以下标题:

缓存控制:无缓存

编译指示:无缓存

到期:格林威治标准时间 1970 年 1 月 1 日星期四 00:00:00

【讨论】:

  • 我来到这里是因为当我运行一个脚本来检查我的服务器是否正在运行时,我得到了一个缓存的结果。添加这些标题对我有用;谢谢!注意我正在使用 Python 请求
猜你喜欢
  • 2015-07-31
  • 2014-11-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多