代码之家  ›  专栏  ›  技术社区  ›  chedine

“缓存控制”头使用说明

  •  2
  • chedine  · 技术社区  · 15 年前

    我们正在努力改进 页面加载时间 地点的除了其他一些优化之外,我还添加了一个servlet过滤器来设置“ 缓存控制 “图像文件的标题(PNG、GIF、JPG)。如预期的那样,映像文件现在正在客户端缓存,我可以验证 到期时间 通过检查temp文件夹(ie),我的问题是,浏览器仍然请求静态资源并获取 HTTP304 (未修改)响应。我的意思是,实际上我已经减少了传输的字节数,但没有减少网络往返次数(在我的例子中,这有点慢)。是否有其他阻止浏览器检查服务器资源是否已被修改的标题/方法?

    3 回复  |  直到 15 年前
        1
  •  1
  •   Chris_O    15 年前

    @切丁,

    浏览器缓存的文件不应返回304,它们应返回200。您应该使用mod ou expires来设置最大使用期限,使用mod ou头来设置缓存控制头。下面是一个为浏览器缓存的静态文件返回有效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>
    
        2
  •  0
  •   Joelio    15 年前

    什么是缓存控制设置,您应该能够设置最大年龄,并让它在一段时间内不回来。

    您可能想尝试使用fiddler来查看您的HTTP请求/响应,并确保它是您所认为的。

    看见 http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html 详情

        3
  •  0
  •   StuartLC    15 年前

    是的,在浏览器上。例如,在IE中,在浏览历史记录设置下,选项“检查存储页面的新版本”-选择“从不”将“遵守”到期,并避免请求/未修改的服务器行程,直到指定的到期日期到来。

    推荐文章