什么是缓存机制
当浏览器请求一个网站内容的时候如果发现URL地址是和上次请求一致,则会在本地读取上次请求过来的文件,这就是浏览器的缓存机制。这么做的好处是减少网络访问带宽,减少响应延迟
缺点:如果服务器上的内容改变了,但是url地址并没有做更改,此时浏览器仍然使用上次的缓存的内容,并不会去服务器重新获取
浏览器第一次发送请求
服务器响应
浏览器第二次发送请求
Etag
web服务器响应请求时来告诉浏览器当前资源在服务器的唯一标识(由服务器生成)
If-None-Match
当资源过期时(Cache-Control标识的max-age),发现资源具有Etag声明,则再次想web服务器请求时带上头If-None-Match(Etag的值) 。web服务器收到请求后发现有头If-None-Match则与被请求资源的相应校验串进行比对,觉得返回200还是304
Last-Modified
标识这个资源的最后修改时间,web服务器在响应请求时会告诉浏览器资源的最后修改时间
If-Modified-Since
当资源过期时(Cache-Control标识的max-age),发现资源具有Last-Modified声明,则再次向web服务器请求时带上If-Modified-Since ,标识请求时间。web服务器收到请求后发现有头If-Modified-Since则与被请求资源的最后修改时间进行比对。若最后修改时间较新,说明资源被改动过,则相应整片资源内容(写在响应消息包体内),HTTP 200 ; 若最后修改时间较旧,说明资源没有被修改,则相应HTTP 304 , 告知浏览器继续使用所保存的cache
既没有Etag又没有Last-Modified
当资源过期时(Cache-Control标识的max-age), 则直接向web服务器请求,和第一次请求的过程一样