按 MDN 官方的说明:
The immutable response directive indicates that the response will not be updated while it's fresh.
Cache-Control: public, max-age=604800, immutable
就像上面这段代码。在资源未过期的情况下,难道没有 immutable
,浏览器在刷新的时候也会去 server 询问这个资源是否过期吗?
Cache-control: max-age=604800
已经说明了这个资源是强缓存。在未过期的情况下,本来就不会再去 server 请求。
所以,我不太理解为什么 Cache-Control 还需要 immutable 这个指令?
感谢分享指正。
![]() |
1
bxb100 43 天前 ![]() |
![]() |
2
zy445566 43 天前 ![]() 反正据我观察浏览器和浏览器的 iframe 和客户端表现都不一样
在浏览器里面 max-age 还会看协商缓存 比如 etag 和 Last-Modified ,比如如果 etag 存在,有 max-age 还会请求服务器并发送客户端的 If-None-Match 值,如果服务器接受到 If-None-Match 一致则返回 304 ,返回体无内容,如果不一致就会返回 200 并将内容放在消息体返回。 但是在浏览器的 iframe 和客户端就很奇怪,不会发送请求,我这边把谷歌浏览器的调试器连接到 iframe 和客户端的 web 里面都是显示返回头是 200 ,但是后面标志 from disk cache ,也就是压根没有请求服务端 |
![]() |
5
sagaxu 43 天前
在未过期的情况下,本来就不会再去 server 请求。
那 304 是干嘛用的? |
6
justdoit123 OP @bxb100 感谢~ 这个 Q&A 说得很清楚。
|
7
justdoit123 OP @sagaxu 你说的那是协商缓存吧? Expires 与 Cache-Control max-age=XXX 是强缓存。
|
8
justdoit123 OP |