澄清“Cache-Control”标头的使用

时间:2010-08-27 12:05:29

标签: html caching java-ee header

我们正在努力改善网站的网页加载时间。除了少数其他优化之外,我还添加了一个servlet过滤器,用于将“ Cache-Control ”标头设置为图像文件(png,gif,jpg)。正如预期的那样,图像文件现在在客户端缓存,我可以通过检查临时文件夹(IE)验证每个文件的到期时间。我的问题是,浏览器仍然请求静态资源并获得 HTTP304 (未修改)响应。我的意思是,实际上我所取得的成就是我减少了传输的字节数,但没有减少网络往返次数(在我的情况下,这有点慢)。是否有任何其他标题/方法可以阻止浏览器检查服务器资源是否已被修改?

3 个答案:

答案 0 :(得分:1)

<强> @chedine,

浏览器缓存文件不应返回304,它们应返回200.您应该使用mod_expires设置max age和mod_headers来设置Cache-Control标头。下面是一个示例,它为浏览器缓存的静态文件返回有效的200响应:

<IfModule mod_expires.c>
    ExpiresActive On
    ExpiresByType text/css M5184000
    ExpiresByType application/x-javascript M5184000
    ExpiresByType text/html M1200
    ExpiresByType text/plain M1200
    ExpiresByType image/gif M31536000
    ExpiresByType application/x-gzip M31536000
    ExpiresByType image/x-icon M31536000
    ExpiresByType image/jpeg M31536000
    ExpiresByType image/png M31536000
</IfModule>

<FilesMatch "\.(asf|asx|wax|wmv|wmx|avi|bmp|class|divx|doc|docx|exe|gif|gz|gzip|ico|jpg|jpeg|jpe|mdb|mid|midi|mov|qt|mp3|m4a|mp4|m4v|mpeg|mpg|mpe|mpp|odb|odc|odf|odg|odp|ods|odt|ogg|pdf|png|pot|pps|ppt|pptx|ra|ram|swf|tar|tif|tiff|wav|wma|wri|xla|xls|xlsx|xlt|xlw|zip)$">
    <IfModule mod_headers.c>
         Header set Vary "Accept-Encoding, Cookie"
        Header set Pragma "public"
        Header append Cache-Control "public, must-revalidate, proxy-revalidate"
    </IfModule>
</FilesMatch>

答案 1 :(得分:0)

你有什么缓存控制设置,你应该能够设置max-age并让它在一段时间内不回来。

您可能想尝试使用fiddler查看您的http请求/响应,并确保它符合您的想法。

有关详细信息,请参阅http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html

答案 2 :(得分:0)

是的,在浏览器本身上。例如在IE中,在浏览历史记录设置下,选项“检查存储页面的较新版本” - 选择“从不”将“兑现”到期并且将避免请求/未修改的服务器之旅,直到所述到期日期到来。

相关问题