为啥我看到来自 Wikipedia 的不同页面?

Posted

技术标签:

【中文标题】为啥我看到来自 Wikipedia 的不同页面?【英文标题】:Why am I see different pages from Wikipedia?为什么我看到来自 Wikipedia 的不同页面? 【发布时间】:2012-09-10 02:06:38 【问题描述】:

当我在任何浏览器中打开 http://en.wikipedia.org/wiki/Category:Births_by_year 时,我会看到包含许多子类别的类别页面和一个子页面 http://en.wikipedia.org/wiki/Park_Sung-Baek

但是当我用 Java 阅读同一个页面时,我会得到不同内容的类别页面。而不是上面提到的子页面,它包含http://en.wikipedia.org/wiki/User:Mijotoba/Ruth_Stella_Correa_Palacio

怎么可能?为什么***呈现不同的页面?

设置User-Agent 没有帮助。

请求“正常”内容的标头

GET http://en.wikipedia.org/wiki/Category:Births_by_year HTTP/1.1
Accept: text/html, application/xhtml+xml, */*
Accept-Language: ru-RU,zh-CN;q=0.5
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0)
Accept-Encoding: gzip, deflate
Connection: Keep-Alive
Host: en.wikipedia.org

请求“修改”内容的标头

GET http://en.wikipedia.org/wiki/Category:Births_by_year HTTP/1.1
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0)
Host: en.wikipedia.org
Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2
Connection: keep-alive

【问题讨论】:

我在此处看到“en.wikipedia.org/wiki/User:Mijotoba/Ruth_Stella_Correa_Palacio”,尝试使用 Ctrl+F5 重新加载浏览器缓存。 这不是浏览器缓存,因为我在 Fiddler2 中看到了内容。 Ctrl+F5 没有帮助。我在所有浏览器(IE、FF、GC)中都看到了第一个版本 同样,OSX 10.8 + Chrome / Safari --> Ruth Stella Correa Palacio。 Chrome 开发者在这里。你在世界的哪个地区?你确定它正在访问 en.wikipedia.org? 据我所知,这是Accept-Encoding: gzip, deflate 行。也许服务器上有一个 gzipped 缓存版本? 【参考方案1】:

是的,这似乎是 Wikipedia 前端缓存的临时问题。具体来说,当我从浏览器(发送请求标头Accept-Encoding: gzip, deflate)请求the page in question 时,我看到的响应包含标头:

Last-Modified: Thu, 13 Sep 2012 16:46:55 GMT

如果我从命令行使用LWP 请求同一页面(不发送Accept-Encoding 标头),标头看起来非常不同:

Last-Modified: Sat, 25 Aug 2012 12:52:42 GMT

事实上,后一个响应包含与您报告通过 Java 客户端接收到的相同的过时内容。

我怀疑发生的事情是,在过去的某个时候,服务器故障导致页面更改时过期的副本没有从缓存中清除。在这种特殊情况下,您可能可以通过purging the page 修复它。更一般地说,如果您以后继续看到此类陈旧的缓存页面出现,您可能需要将问题报告给Wikipedia server admins,以防缓存出现问题需要修复。

附言。你为什么要使用 Java 获取 Wikipedia 前端 HTML 页面?通常,您应该改用MediaWiki API。

【讨论】:

以上是关于为啥我看到来自 Wikipedia 的不同页面?的主要内容,如果未能解决你的问题,请参考以下文章

为啥这些具有完全相同类别的按钮宽度不同?

为啥是 PRG 模式而不是其他模式?

基本 CRC32 Wikipedia 实现不同于在线看到的标准 CRC32

手机日历封面为啥不同时显示当天日期

为啥我在刷新页面时没有显示来自 apollo 服务器的数据?

Wikipedia 在 iPad 上以不同方式呈现 WkWebView 和 Safari