【问题标题】:urllib.urlopen returns an old page?urllib.urlopen 返回一个旧页面?
【发布时间】:2013-04-25 08:43:56
【问题描述】:

所以我有一个非常简单的 HTML 页面(目录列表),我尝试使用 urllib 读取它,这样:

page =  urllib.urlopen(coreRepositoryUrl).read()

问题是,我以这种方式阅读的 HTML 比最新的要旧。 info() 回复我这个:

Date: Fri, 19 Apr 2013 18:48:09 GMT
Server: Apache/2.0.52 (Fedora)
Content-Type: text/html; charset=UTF-8
Connection: close
Age: 481084

页面最后一次更新是今天(2013-04-25)。 哪个组件可能是缓存的组件?

【问题讨论】:

  • 您可以添加您的链接吗? urlopen().info()google.com (PasteBin) 上按预期工作
  • @soon 这是一个本地构建服务器。 (不幸的是,我无法到达公司代理后面的 pastebin ......)但我刚刚发现了一个类似的问题,但答案令人失望......stackoverflow.com/questions/3586295/…
  • urllib 可能会使用自己的与 http 缓存无关的缓存(在某些情况下,请参阅tempcache, ftpcache in URLopener)。 urllib.urlcleanup() 清除缓存。 urllib2 不缓存任何内容。

标签: python urllib


【解决方案1】:

在您的请求中添加值为“max-age=0”的标头“Cache-Control”

import urllib2
req = urllib2.Request(url)
req.add_header('Cache-Control', 'max-age=0')
resp = urllib2.urlopen(req)
content = resp.read()

沿途每个缓存都会使用该标头重新验证其缓存条目

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-22
    • 2017-06-05
    • 2018-09-15
    • 2014-05-07
    相关资源
    最近更新 更多