没有"Last-Modified"HTTP标头 - >但是缓存了吗?

abe*_*ier 6 caching http http-headers

从浏览器的角度来看,

如果在没有Last-ModifiedHTTP头字段的情况下提供组件(图像,脚本,样式表...)会发生什么...

然而If-Modified-Since,由于缺少日期/时间信息,它是否会被浏览器缓存,即使它将来无法执行有效性检查()?

例如:

GET /foo.png HTTP/1.1
Host: example.org
--
200 OK
Content-Type: image/png

...
Run Code Online (Sandbox Code Playgroud)

foo.png然而缓存?

-

您是否知道我可以自己编写的原始HTTP响应服务的任何在线服务,以便测试我的要求?

谢谢.

Mar*_*ham 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 ,了解这可能会让一些人感到惊讶.


Mar*_*tin 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
Run Code Online (Sandbox Code Playgroud)

Last-Modified即使响应中没有任何内容,浏览器仍然可以使用该Date标头来进行后续If-Modified-Since请求。