从浏览器的角度来看,
如果在没有Last-Modified
HTTP标头字段的情况下提供组件(图像,脚本,样式表...)会发生什么......
由于缺少日期/时间信息,即使它将来无法执行有效性检查(If-Modified-Since
),它是否会被浏览器缓存?
例如:
GET /foo.png HTTP/1.1
Host: example.org
--
200 OK
Content-Type: image/png
...
是否缓存了foo.png
?
-
您是否知道我可以自己编写的原始HTTP响应服务的任何在线服务,以便测试我的要求?
谢谢。
答案 0 :(得分:5)
一般来说,响应可以进行缓存,除非他们明确表示不能(例如,使用缓存控制:无存储)。
但是,大多数缓存都不会存储没有基于新鲜度的内容的响应,例如Cache-Control,Expires或Last-Modified。
有关完整规则,请参阅: http://tools.ietf.org/html/draft-ietf-httpbis-p6-cache-13#section-2.1
请参阅: http://www.mnot.net/blog/2009/02/24/unintended_caching 例如,这会让一些人感到惊讶。
答案 1 :(得分:4)
是,即使没有Last-Modified
响应标头,图片也可能会被缓存。
然后,浏览器将缓存图像,直到其TTL过期。您可以使用适当的响应标头设置图像的生存时间,例如这会将TTL设置为一小时:
Cache-Control: max-age=3600
Date: Tue, 29 Mar 2011 20:18:17 GMT
Expires: Tue, 29 Mar 2011 21:18:17 GMT
即使响应中没有任何Last-Modified
,浏览器仍可能会对后续Date
次请求使用If-Modified-Since
标头。
答案 2 :(得分:2)
我在大型网站上禁用了Last-Modified标头,FF 13没有从缓存中获取内容,尽管给出了max-age等。没有Last-Modified标头的内容总是在请求时获得状态200 ok而不是304.所以浏览器在缓存中查找它。