提供部分内容的Apachecaching206响应于对全部内容的请求

我们使用mod_cache在Apache 2.2.19后面运行Plone 3.3.6。 我们最近注意到,Apache正在caching对范围请求的响应,然后在请求完整资源时提供部分响应。

什么似乎发生:

  • 某些客户端为尚未处于高速caching或处于高速caching但已过期的资源发出一个范围请求
  • Apache正确地服务于206响应
  • 另一个客户端使一个标准的请求相同的资源
  • Apache对这个第二个客户端提供同样的响应:它应该以200来响应整个响应

这偶尔会导致我们在一些网站上的问题

我可以一贯地复制这个:我写了一个小python脚本来提出一个范围请求。

我不认为我们的Apacheconfiguration没有做任何不寻常的事情。 我们正在使用反向代理configuration来为Plone提供页面。 与mod_cache相关的Apacheconfiguration如下:

CacheEnable disk / CacheDisable /static CacheDisable /sitemap.xml.gz CacheDisable /robots.txt CacheIgnoreHeaders Set-Cookie UseCanonicalName On RequestHeader edit Accept-Encoding ^.*gzip.*$ gzip early RequestHeader edit Accept-Encoding ^(?!gzip).*$ "" early 

Apache高速caching指南在状态码列表中不包括响应“必须具有”的206个响应,以便将其caching。 这是Apache的错误还是我们在configuration中做错了?

这是apache的bug 49113 ,已经被固定在trunk中,但是在2.2.19中没有被修复 。

这在Apache 2.2.23中得到修复。 升级到2.2.23,你不需要补丁