问题
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.
回答1:
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's Accent-Encoding
header. This may indicate that, if the server didn't replied 304 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).
来源:https://stackoverflow.com/questions/7454690/livehttpheaders-which-cache-control-info-is-right