Sha*_*ane 13 python urllib2 urlopen
他们没有在python文档中提到这一点.最近我正在测试一个网站只是使用urllib2.urlopen()来刷新网站以提取某些内容,我注意到有时当我更新网站时,urllib2.urlopen()似乎没有得到新添加的内容.所以我想它确实在某处缓存了东西,对吧?
leo*_*luk 10
所以我想它确实在某处缓存了东西,对吧?
它没有.
如果您没有看到新数据,这可能有很多原因.出于性能原因,大多数较大的Web服务都使用服务器端缓存,例如使用Varnish和Squid等缓存代理或应用程序级缓存.
如果问题是由服务器端缓存引起的,通常无法强制服务器为您提供最新数据.
对于像鱿鱼这样的缓存代理,情况就不同了.通常,squid会在HTTP响应中添加一些额外的标头(response().info().headers).
如果您看到名为X-Cache或的标题字段X-Cache-Lookup,则表示您未直接连接到远程服务器,而是通过透明代理连接.
如果你有类似的东西:X-Cache: HIT from proxy.domain.tld这意味着你得到的响应被缓存.相反X-Cache MISS from proxy.domain.tld,这意味着响应是新鲜的.
很老的问题,但我有一个类似的问题,这个解决方案没有解决.
在我的情况下,我不得不像这样欺骗用户代理:
request = urllib2.Request(url)
request.add_header('User-Agent', 'Mozilla/5.0')
content = urllib2.build_opener().open(request)
Run Code Online (Sandbox Code Playgroud)
希望这有助于任何人......