http的缓存分为强制缓存和对比缓存,二者的区别在于,强制缓存只要设置的时间不过时,就能够直接拿去用,而不用向服务器再一次发送请求。而对比缓存无论缓存是否有效,都须要向服务器发送请求。浏览器
其过程以下:缓存
1. 浏览器会先查询Cache-Control来判断内容是否过时,若是没有过时,直接读取浏览器缓存文件。(强制缓存)服务器
2. 在浏览器上判断上次文件返回头中是否含有ETag,若是有则连同If-None-Match一块儿向服务器发送请求,服务器判断ETag是否失效,有效返回304读取缓存数据(对比缓 存)。失效返回200。ETag是有服务器生成的当前资源的惟一标识,若是资源发生改变,服务器会发送一个新的Etag。blog
3. 在浏览器端判断上次文件返回头中是否含有Last-Modified,有则连同If-Modified-Since一块儿想服务器发送请求,服务器判断Last-Modefied是有失效,有效返回304读取缓 存数据(对比缓存),失效返回200。资源
4. 若是ETag和Last-Modefied都没有,则直接向服务器发送请求内容。ast