开发者

no 'Last-Modified' HTTP header -> however cached?

From a browser perspective,

What occur if a component (image, script, stylesheet...) is served without a Last-Modified HTTP header field...

Is it however cached by the browser even if it 开发者_StackOverflow中文版won't be able to perform a validity check(If-Modified-Since) in future, due to his lack of date/time information?

Eg:

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

...

Is foo.png however cached?

--

Would you know any online service to serve my raw HTTP response that I can write myself in order to test what I'm asking ?

Thank you.


Generally speaking, responses can be cached unless they explicitly say that they can't (e.g., with cache-control: no-store).

However, most caches will not store responses that don't have something that they can base freshness on, e.g., Cache-Control, Expires, or Last-Modified.

For the complete rules, see: https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-p6-cache-13#section-2.1

See: http://www.mnot.net/blog/2009/02/24/unintended_caching for an example of how this can surprise some people.


Yes, the image may get cached even without a Last-Modified response header.

The browser will then cache the image until its TTL expires. You can set the image's Time To Live using appropriate response headers, e.g. this would set the TTL to one hour:

Cache-Control: max-age=3600
Date: Tue, 29 Mar 2011 20:18:17 GMT
Expires: Tue, 29 Mar 2011 21:18:17 GMT

Even without any Last-Modified in the response, the browser may still use the Date header for subsequent If-Modified-Since requests.


I disabled the Last-Modified header on a large site and FF 13 doesn't take the contents from cache, although a max-age is given etc. Contents without a Last-Modified header ALWAYS get a status 200 ok when requested, not a 304. So the browser looks for it in the cache.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜