LiveHttpHeaders:哪个缓存控制信息是正确的 [英] LiveHttpHeaders: which cache-control info is right
问题描述
LiveHttpHeaders
我试图查看我的css,JS文件是否使用htaccess使用来自Apache的头文件模块进行缓存。但我搞不清楚,有'缓存控制'数据的2个值:$ $ p $ GET /proz/css/global.css HTTP / 1.1
主机:localhost
用户代理:Mozilla / 5.0(Windows NT 5.1; rv:5.0)Gecko / 20100101 Firefox / 5.0
接受: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
连接:keep-alive
参考: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未修改
日期:2011年9月17日(星期六)03:04:50 GMT
服务器:Apache / 2.2.17(Win32)PHP / 5.2.8
连接:Keep-Alive
Keep- Alive:timeout = 5,max = 99
Etag:400000000b06a-2999-4ad157e5b4583
Cache-Control:max-age = 604800,public
Vary:Accept-Encoding
哪一个是真正的数据,fi第一个缓存控制数据(max-age = 0)或后一个。
我也想知道如何确保我的JS,CSS,HTML在htaccess中使用deflate模块后,文件被压缩。是的,这两个头文件和deflate模块都打开。
b
$ b
- 空白行之前的部分是您的浏览器发送的请求
- 空白行之后的部分是响应,由服务器发送
$ b $Cache-Control:max-age = 0 $ c $客户端(您的浏览器)发送的消息c告诉服务器(或者中间的任何代理)发送最新版本的文件。浏览器通常会在您点击 refresh 按钮时发送。
$ bCache-Control:max-age = 604800 ,服务器发送的公共
告诉客户端(你的浏览器或代理)该文件有效时间为604800秒,并且可以在那段时间被缓存。 (浏览器甚至不会试图询问服务器是否存在更新的版本,除非您按下 refresh ,就像在这种情况下那样)。
服务器回答
304 Not Modified
,这意味着您的浏览器已经有最新的版本,并且不需要再次下载(它没有下载
$ bVary:Accept-Encoding
标题表示服务器根据客户端的Accent-Encoding
标题。这可能表明,如果服务器没有回答304 Not Modified
,它将压缩文件。
为了验证最后一点,清除缓存并再次请求文件,并查看
Content-Encoding
头的内容(如果数据必须是gzip或deflate被压缩)。Using
LiveHttpHeaders
for Firefox 6 I was trying to see if my css, JS files being cached using Headers Module from Apache using htaccess. But I confuse, there are 2 values from the 'Cache-Control' data: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
Which one is the true data, the first Cache-Control data (max-age=0) or the latter one.
I also would like to know how do I make sure that my JS, CSS, HTML files being compress after I use deflate module in htaccess. And yes, both headers and deflate modules are turn on.
解决方案There are two parts in this listing:
- The part before the blank line is the request, sent by your browser
- The part after the blank line is the response, sent by the server
The
Cache-Control: max-age=0
sent by the client (your browser) tells the server (or any proxy in the middle) to send the most fresh version of the file. The browser usually sends this when you hit the refresh button.The
Cache-Control: max-age=604800, public
sent by the server tells the client (your browser or a proxy) that the file is valid for 604800 seconds and can be cached for that time. (The browser won't even attemps to ask the server if a newer version exists, unless you hit refresh, as you did in this case.)The server replied
304 Not Modified
, this means that your browser already has the most recent version and it doesn't need to download it again (it did not downloaded it again).The
Vary: Accept-Encoding
header indicate that the server taken some decisions based on the client'sAccent-Encoding
header. This may indicate that, if the server didn't replied304 Not Modified
, it would have compressed the file.To verify this last point, clear your cache, and request the file again, and look at the content of the
Content-Encoding
header (must be gzip or deflate if the data is compressed).这篇关于LiveHttpHeaders:哪个缓存控制信息是正确的的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!