繁体   English   中英

澄清“ Cache-Control”头的用法

[英]Clarification on usage of “Cache-Control” header

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

@chedine,

浏览器缓存的文件不应返回304,而应返回200。您应使用mod_expires设置最长期限,并使用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>

什么是缓存控制设置,您应该能够设置最大寿命,并使其在一段时间内不回来。

您可能想尝试提琴手查看您的http请求/响应,并确保它是您所认为的。

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

是的,在浏览器本身上。 例如,在IE中的“浏览历史记录”设置下,选择“检查存储页面的较新版本”-选择“从不”将“兑现”有效期,并避免请求/未经修改的服务器访问,直到达到规定的有效期。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM