我试图找出一个caching问题。 我们目前正在使用内置caching的CMS。 然后,我们可以通过控制面板删除caching的副本,而未caching的页面将被投放,直到我们再次caching该页面。
长话短说,我们知道无论是代理服务器还是负载均衡器,我们都认为它正在caching页面以及CMS。 我们的具体问题是,当我们在CMS中取消caching页面时,需要15分钟(定时)显示未caching(即使在使用不同的浏览器,清除浏览器caching等之后),而在networking之前设备被引入,未被caching的页面将立即显示。 不幸的是,我们没有任何地方保存任何历史响应头。
当我们相信页面被proxy / lbcaching时,Response头将返回:
HTTP/1.1 304 Not Modified Server: Apache/2.0.59 (Unix) JRun/4.0 mod_ssl/2.0.59 OpenSSL/0.9.8k PHP/5.2.6 Last-Modified: Fri, 03 Aug 2012 13:29:12 GMT Etag: "92fe-18f7-837ada00" Accept-Ranges: bytes Keep-Alive: timeout=5, max=100 Content-Type: text/html Content-Encoding: gzip Connection: Keep-Alive Date: Mon, 06 Aug 2012 13:49:40 GMT X-Cntnt-Length: 6391
当它没有被CMScaching时,响应头是:
HTTP/1.0 200 OK Date: Mon, 06 Aug 2012 14:03:59 GMT Server: Apache/2.0.59 (Unix) JRun/4.0 mod_ssl/2.0.59 OpenSSL/0.9.8k PHP/5.2.6 X-Powered-By: PHP/5.2.6 Set-Cookie: blah-blah-blah Expires: Mon, 26 Jul 1997 05:00:00 GMT Last-Modified: Mon, 06 Aug 2012 14:04:04 GMT Pragma: no-cache Connection: close Content-Type: text/html
我想我的问题是,Apache2可以configuration为返回HTTP 1.0和1.1? 我知道Etag表示一个caching页面,并且认为它在HTTP / 1.0中不可用。
感谢您的任何见解。
[我最初在stackoverflow上问这个问题,有人build议我在这里问。]
Web服务器肯定可以用HTTP 1.0和HTTP 1.1进行响应。 例如。 您可以使用web-sniffer.net来确认这一点。 testing向Google.com发送“HTTP 1.0”请求,您将收到1.0回应。 使用HTTP 1.1进行testing,您将得到一个HTTP 1.1响应。
如果您正在设置声明您的内容可以caching的标头,则networking设备和用户浏览器caching的声明相当公平,因为您已声明允许。
要考虑的解决scheme是在进行更改时将caching时间设置为低(或closures),以便更改立即反映出来。 然后,当你完成后,重新开启caching,或提高caching时间。
您的未caching的响应返回:
X-Powered-By: PHP/5.2.6
这意味着它是由PHP生成的页面,这意味着您的PHP应用程序也可能生成了HTTP/1.0 200 OK 。 如果是这种情况,通过其源代码searchHTTP/1.0可能会揭示出错的代码。