我知道这实际上是一件古老的事情,但我确实对此有疑问,以及它在开始时应该如何工作。所以我至少得到了这四个可以发回给客户端的重要缓存头(Last-Modified
、、Cache-Control
和)Expires
ETag
问题 2.2 的示例情况:
因此,假设我有一些带有文章的网站。每 15 分钟到 7 天可能会有一篇新文章。所以我设置Cache-Control
并Expires
缓存 15 分钟,以便客户端始终获得最新版本。
我现在的想法ETag
和想法Last-Modified
:
我只是在那里放了一些内容的哈希值,304
如果If-None-Match
== ,我可以发送给客户端ETag
。
304
如果If-Modified-Since
>= ,我可以发送客户端Last-Modified
。
问题
- 我是否需要
Cache-Control
并Expires
支持所有浏览器? - 它看起来只是告诉我的浏览器内容应该在计算机上缓存多长时间,对吗
Cache-Control
?Expires
- 所以我只能使用
ETag
andLast-Modified
找出我应该什么时候发送304
对吗? - 所以我可以设置
Cache-Control
和永远,如果或改变Expires
了新版本,只需向客户发送新版本?ETag
Last-Modified
- 因为这适用于我的浏览器,但它适用于所有浏览器吗?
- 所以我只能使用
- 我是否需要
ETag
并Last-Modified
支持所有浏览器? Pragma
看起来像另一个类似于 的缓存标头Cache-Control
,哪些浏览器正在使用Pragma
,我需要它吗?