html - 说明 "Cache-Control" header 的用法

标签 html caching jakarta-ee header

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

最佳答案

@chedine,

浏览器缓存的文件不应返回 304,它们应该返回 200。您应该使用 mod_expires 设置最长期限,使用 mod_headers 设置 Cache-Control header 。下面是一个为浏览器缓存的静态文件返回有效 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>

关于html - 说明 "Cache-Control" header 的用法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3583912/

相关文章:

html - IIS 6 不允许我正确重定向到自定义 404 Not Found HTML 页面

algorithm - HTML5 Canvas算法生成垂直轴随机对称

java - Hazelcast 中的非分布式数据结构

java - 如何消除 IBM RAD 8/Eclipse 中的错误?

performance - 使用 Jmeter 的 JBOSS wildfly 10 性能调优

javascript - 如何针对鼠标悬停事件上的元素 id 值进行测试?

html - 在 CSS 导航菜单中选择最后一个事件的 li 类

c# - 当您不再有上下文引用时如何从上下文中分离实体

asp.net - Cache.Insert ("") 绝对过期时间为 UTC 偏移量

jakarta-ee - 在初始 Grails 项目启动后部署更改