LiveHttpHeaders:哪个缓存控制信息是正确的

时间:2011-09-17 12:21:48

标签: http firefox header cache-control

在Firefox 6中使用LiveHttpHeaders我试图查看我的css,JS文件是否使用htaccess从Apache使用Headers Module进行缓存。但我很困惑,“Cache-Control”数据有两个值:

GET /proz/css/global.css HTTP/1.1
Host: localhost
User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:5.0) Gecko/20100101 Firefox/5.0
Accept: text/css,*/*;q=0.1
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip, deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Connection: keep-alive
Referer: http://localhost/proz/
Cookie: PHPSESSID=el34de37pe3bnp4rdtbst1kd43
If-Modified-Since: Fri, 16 Sep 2011 21:15:32 GMT
If-None-Match: "400000000b06a-2999-4ad157e5b4583"
Cache-Control: max-age=0

HTTP/1.1 304 Not Modified
Date: Sat, 17 Sep 2011 03:04:50 GMT
Server: Apache/2.2.17 (Win32) PHP/5.2.8
Connection: Keep-Alive
Keep-Alive: timeout=5, max=99
Etag: "400000000b06a-2999-4ad157e5b4583"
Cache-Control: max-age=604800, public
Vary: Accept-Encoding

哪一个是真实数据,第一个Cache-Control数据(max-age = 0)或后者。

我还想知道在htaccess中使用deflate模块之后如何确保我的JS,CSS,HTML文件被压缩。是的,标题和deflate模块都打开了。

1 个答案:

答案 0 :(得分:5)

此清单中有两个部分:

  • 空白行前面的部分是您的浏览器发送的请求
  • 空行后的部分是服务器发送的响应

客户端(您的浏览器)发送的Cache-Control: max-age=0告诉服务器(或中间的任何代理)发送最新版本的文件。当您点击刷新按钮时,浏览器通常会发送此信息。

服务器发送的Cache-Control: max-age=604800, public告诉客户端(您的浏览器或代理)该文件有效604800秒,并且可以缓存该时间。 (浏览器甚至不会尝试询问服务器是否存在更新的版本,除非您按 refresh ,就像在这种情况下那样。)

服务器回复304 Not Modified,这意味着您的浏览器已经拥有最新版本,并且无需再次下载(它没有再次下载)。

Vary: Accept-Encoding标头表示服务器根据客户端的Accent-Encoding标头做出了一些决定。这可能表明,如果服务器没有回复304 Not Modified,它就会压缩文件。

要验证最后一点,请清除缓存,然后再次请求该文件,并查看Content-Encoding标头的内容(如果数据已压缩,则必须是gzip或deflate)。