浏览器会如何对待标记了Cache-Control和Max-Age的内容的


如题,如果我在服务器端为某个人内容设置了缓存,那么在缓存有效的这段时间内,浏览器到底有没有请求服务器呢?我看了下Chrome的Network监控,得到的是 304 Not Modified 。这个status是浏览器自己得出来的还是跟服务器确认后得出来的?如果完全走的是客户端缓存,那么我如果在服务器端强制更新缓存,浏览器是不是也无法更新?

请输入图片描述

http chrome 缓存

ZeroGai 10 years, 3 months ago

如果服务器设置了Cache-Control或者Expires过期时间,那么浏览器在这个过期时间内会使用缓存,不会产生请求,当超过这个过期时间,浏览器就会向服务器发送请求。
而请求发送到服务器之后,服务器会根据请求头的If-Modified-Since内容来判断这个内容是否在对应时间点之后有更新,如果没有更新那么就返回304以及Last-Modified请求头部,浏览器收到这个头部会更新If-Modified-Since的值,下次发生请求的时候会带上这个新的值;如果发生了更新,那么就会返回200以及更新之后的资源。

阿良々木火憐 answered 10 years, 3 months ago

服务器端设置缓存过期时间后,客户端会据此设置缓存内容的生存时间。客户端在生存时间内访问缓存内容时会询问服务器此内容是否有变化,如无变化则服务器只返回响应头,用于更新过期时间。

对应强制缓存,就需要通过附加版本标识来改变缓存内容。如图中的 stub.en.js?v=bb8ad211daea 这样的版本参数。

isod3 answered 10 years, 3 months ago

Your Answer