我有一个网页,里面有一些图片等。我清除了缓存并点击了 URL。页面请求具有以下响应标头:
Cache-Control:public, max-age=600
Connection:keep-alive
Content-Encoding:gzip
Content-Language:en
Content-Type:text/html; charset=utf-8
Date:Wed, 21 Nov 2012 07:14:35 GMT
Etag:"1353481170-1"
Expires:Sun, 19 Nov 1978 05:00:00 GMT
Last-Modified:Wed, 21 Nov 2012 06:59:30 +0000
Server:Apache/2.2.3 (CentOS)
Vary:Cookie,Accept-Encoding
其中一张图像具有以下响应标头:
Accept-Ranges:none
Cache-Control:max-age=1209600
Connection:keep-alive
Content-Encoding:gzip
Content-Length:2206
Content-Type:text/css
Date:Wed, 21 Nov 2012 07:14:36 GMT
ETag:"6c4f9-89e-4cee5893ab000"
Expires:Wed, 05 Dec 2012 07:14:36 GMT
Last-Modified:Tue, 20 Nov 2012 04:19:12 GMT
Server:Apache/2.2.3 (CentOS)
Vary:Accept-Encoding
当我再次点击相同的 URL 并在 chrome 中看到控制台时,我看到对于主请求,我的浏览器发送了一个 If-modified-since 并从服务器获得提示 304,而对于图像,浏览器没有发送请求和从缓存中提供。
我的问题如下:
如果您看到资源的第一个响应具有 max-age 和 last-modified 标头,尽管秒数不同,浏览器是否将 css/JS/img 与 text coz 区别对待。那么为什么它仍然发送请求而不是另一个。
万一我们有 max-age 和 last-modified 标头优先?max-age (AFAIK) 的目的是我们保存到服务器的往返行程,并且根据 HTTP,如果缓存获得 last-modified 标头,它将始终在后续请求中发送 if-modified-since。