服务器对客户端返回HTTP/1.1 304
意思是服务端告诉客户端 我的的缓存没有改变你不需要来取了,就用你自己本地的吧!
浏览器的三种缓存协商机制:
if-modified-since (基于最后修改时间)
该时间内浏览器多不用去源站获取数据
响应头部:
Last-Modified: Fri, 17 Mar 2017 09:42:02 GMT
浏览器请求头部中会增加:
If-Modified-Since: Fri, 17 Mar 2017 09:42:02 GMT
Etag (If-None-Match)
请求文件的md5值没有改变就不用去源站取数据
响应头部:
ETag: "bgc7-rb-46585209c1bc0"
浏览器在请求头中会总结:
If-None-Match: "bgc7-rb-46585209c1bc0"
expires (过期时间)
浏览器一旦看到某个内容附带Expires标记后,便拥有了极大的权力,它无须在过期之前每次都询问服务器,完全可以自作主张,而Last-Modified标记让浏览器感到拘束,它们不得不每次都询问服务器,即便它们认为这样做毫无意义。
expires中设置时间 (这种方式如果本地系统时间不准可能造成缓存一直失效)
cache-control 头中设置时间