1.强缓存
强缓存会直接从本地缓存中读取,不发送请求给服务器。
cache-control的几个取值定义:
max-age:设置强缓存时长(s),单位是s,如3600s;
no-cache:不进行强缓存;
no-store:不进行强缓存也不进行协商缓存,每次都向服务器发送资源请求;
private:仅浏览器缓存;
public:浏览器和代理服务器都可以缓存。
强缓存的存储地点分为:
memory cache(内存缓存),较小的资源,状态码200
dist cache(磁盘缓存),较大的资源,状态码200
强缓存除了使用Cache-Control实现之外,还可以使用Expires字段,Expires是Http1.0规范,Cache-Control是Http1.1规范,Expires返回一个具体的时间值,代表缓存的有效期,在该日期内浏览器不会向服务器发起请求,而是直接从缓存里获取资源。
2.协商缓存
由服务器来告诉浏览器是否使用缓存资源
浏览器像服务端发起请求,服务端收到请求后,根据last-modified和etag判断资源是否发生变化,若资源已更新,返回 200 状态码并下发最新资源;若文件无改动,则返回 304 Not Modified,浏览器直接复用本地缓存,减少资源传输
ETag:操作系统根据文件内容生成一