http缓存策略
- 缓存什么?一般会缓存,图片、css文件、js文件这些静态文件,更新频率不高的文件
- 为什么缓存?有效减少http请求数量,提升网站的性能。
- 什么是http缓存策略?
http缓存主要由两种:本地缓存和缓存协商。优先使用本地缓存,本地缓存不起作用时使用缓存协商。http缓存主要是头部信息header来决定的。
一:什么是本地缓存?
本地缓存有头部信息的cache-control和expires来决定。
cache-control是个相对值常量,它有如下几个值:
- no-cache:表示不使用本地缓存,使用缓存协商
- no-store:不缓存,每次都从服务器请求数据
- public:所有终端和中间的CDN都可以缓存
- private:只有终端浏览器可以缓存
- max-age:缓存的资源保存的最长时间,优先级高于expires
本地缓存的流程如下:
浏览器第一次请求,服务器返回带有cache-control或者expires,或者两者都有的响应头部信息。浏览器第二次请求时,服务器首先检查本地缓存的失效时间,如果没有失效,直接使用本地缓存,失效了使用缓存协商。
二:缓存协商
缓存协商有头部信息的last-modified/if-modified-since 和 etag/if-no-match来决定。
1)last-modified/if-modified-since
通过比对资源的修改时间来决定是否使用缓存
流程如下:
浏览器第一次请求,服务器返回带有last-modified的响应头部信息。浏览器第二次请求时,向服务器发送if-modified-since的头部信息,服务器比较修改时间,如果时间没有改变,则使用缓存。
2) etag/if-no-match
通过比较文件的摘要信息来判断是否需要使用缓存
流程类似于last-modified的流程。