参考内容:
https://www.cnblogs.com/slly/p/6732749.html
一、浏览器缓存
浏览器缓存就是把一个请求过的Web资源拷贝一份副本存储在浏览器中,当缓存的页面被再次访问的时候,如果网页没有更新,浏览器就不会再次下载网页,而是使用本地缓存的网页(可以从F12后的Size里面看到从缓存获取的资源)
使用缓存的意义:
减少网络带宽消耗;降低服务器压力;减少网络延迟,加快页面打开速度
浏览器端的缓存规则:
浏览器的缓存规则在HTTP的协议头和HTML页面的Meta标签中定义,它们分别从新鲜度和校验值两个维度来规定浏览器是否可以使用缓存中的副本。新鲜度是缓存副本的有效期,用Pragma标识;校验值是服务器在返回资源的时候,在控制头信息带上的这个资源的实体标签Etag,它用作浏览器再次请求的校验标识,如果标识不匹配,则表示资源已过期或已修改
不能被缓存的请求:
1. HTTP信息头中包含Cache-Control:no-cache,pragma:no-cache(HTTP1.0),或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的请求无法被缓存
二、谷歌F12常用面板: