Web缓存机制简介

Web缓存机制简介

一.浏览器缓存与离线缓存

1.1Browser cache和APP cache更新机制示意图
Web缓存机制简介_第1张图片
Browser cache更新示意图
Web缓存机制简介_第2张图片
App cache更新示意图
其中browser cache的机制大家都很清楚了, 其中离线应用的更新是: 除了第一次访问是直接拉取server的, 然后后台更新app cache之外, 其余的情况都是直接访问app cache. 因此, 要如果离线应用的代码更新了, 只有下次打开或者刷新才会生效.。

二、在HTTP请求和响应中常见的与缓存有关的消息报头:

Web缓存机制简介_第3张图片


三、用户操作行为与缓存

用户在使用浏览器的时候,会有各种操作,比如输入地址后回车,按F5刷新等,这些行为会对缓存有什么影响呢?
Web缓存机制简介_第4张图片
通过上表我们可以看到,当用户在按F5进行刷新的时候,会忽略Expires/Cache-Control的设置,会再次发送请求去服务器请求,而Last-Modified/Etag还是有效的,服务器会根据情况判断返回304还是200;而当用户使用Ctrl+F5进行强制刷新的时候,只是所有的缓存机制都将失效,重新从服务器拉去资源。

四、无法被缓存的请求:

1.    HTTP信息头中包含Cache-Control:no-cache,pragma:no-cache,或Cache-Control:max-age=0等告诉浏览器不用缓存的请求
2.    需要根据Cookie,认证信息等决定输入内容的动态请求是不能被缓存的
3.    经过HTTPS安全加密的请求(有人也经过测试发现,ie其实在头部加入Cache-Control:max-age信息,firefox在头部加入Cache-Control:Public之后,能够对HTTPS的资源进行缓存,参考《HTTPS的七个误解》)
4.    POST请求无法被缓存
5.    HTTP响应头中不包含Last-Modified/Etag,也不包含Cache-Control/Expires的请求无法被缓存


五、Http缓存技术 ,304(Not Modified)和200(from cache)的区别?

200 OK (from cache):浏览器没有和服务器确认,直接使用了浏览器缓存;
304 (Not modified):浏览器会先和服务器确认一下缓存有效性,然后在再使用缓存;
当你第一次访问页面时,服务器会返回给你200状态码,同时在头里追加ETag值给你,浏览器拿到后将其缓存。当你再次访问的时候,因为浏览器已经有该地址的ETag值了,会将其缓存的ETag值内容放在请求头的If-None-Match中,服务器检查其自身内容的ETag是否与其一致,如果一致就返回304,告诉你内容和保存的一致,没有发生过变化

你可能感兴趣的:(测试小兵,browser缓存机制,缓存消息头,离线缓存,缓存更新,缓存有效性)