Apache2 可以配置为同时返回 HTTP 1.0 和 1.1 吗?

Apache2 可以配置为同时返回 HTTP 1.0 和 1.1 吗?

我正在尝试解决缓存问题。我们目前正在使用内置缓存的 CMS。然后我们可以通过控制面板删除缓存的副本,未缓存的页面将继续提供,直到我们再次缓存该页面。

长话短说,我们知道已安装代理服务器或负载平衡器,并且我们认为它正在缓存页面以及 CMS。我们的具体问题是,当我们在 CMS 中取消缓存页面时,需要 15 分钟(计时)才能显示未缓存的页面(即使使用不同的浏览器、清除浏览器缓存等),而在引入网络设备之前,未缓存的页面会立即显示。不幸的是,我们没有在任何地方保存任何历史响应标头。

当我们认为该页面正在被代理/lb缓存时,响应头返回:

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

当它没有被CMS缓存时,响应标头是:

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 是否可以配置为同时返回 HTTP 1.0 和 1.1?我知道 Etag 表示缓存页面,并且相信它在 HTTP/1.0 中不可用。

感谢您的任何见解。

[我最初在 stackoverflow 上询问过这个问题,有人建议我在这里询问。]

答案1

当然,Web 服务器可以同时使用 HTTP 1.0 和 HTTP 1.1 进行响应。例如,您可以使用网络嗅探器确认这一点。测试向 Google.com 发送“HTTP 1.0”请求,您将收到 1.0 响应。使用 HTTP 1.1 进行测试,您将收到 HTTP 1.1 响应。

如果您设置的标头声明您的内容可缓存,则网络设备和用户浏览器按照您声明的方式进行缓存是相当公平的。

可以考虑的一个解决方案是,在进行更改时将缓存时间设置为较低(或关闭),以便立即反映更改。完成后,重新打开缓存,或增加缓存时间。

答案2

您的未缓存响应返回:

X-Powered-By: PHP/5.2.6

这意味着该页面是由 PHP 生成的,这意味着您的 PHP 应用程序可能也生成了HTTP/1.0 200 OK。如果是这种情况,则搜索HTTP/1.0其源代码可能会发现有问题的代码。

相关内容