1、强缓存(本地缓存)
浏览器方法请求前,会先去本地找,如果找到,直接读取本地缓存,不会在去请求服务器。否则进入协商缓存阶段。
可通过报文头设置Cache-Control来配置强缓存状态。
Cache-Control常用字段有
1.1 no-store:所有内容都不缓存
1.2 no-cache:缓存,在浏览器使用缓存前,会去请求服务器判断缓存资源是否是最新,有新的用新的。
1.3 max-age=x(单位秒) 请求缓存后的X秒不再发起请求,优先级要比Expires高。
1.4 s-maxage=x(单位秒) 代理服务器请求源站缓存后的X秒不再发起请求,只对CDN缓存有效。
1.5 public 客户端和代理服务器(CDN)都可缓存
1.6 private 只有客户端可以缓存
2、协商缓存(弱缓存)
当进入该阶段,客户端会去发送请求,服务端根据请求报文头中的字段,来判断是否命中协商缓存,如果命中返回304(无响应体),
浏览器可以直接从浏览器缓存中获取。如果也未命中,则从服务端加载资源。
可通过Etag/If-None-Match、Last-Modifued/If-Modified-Since字段配置协商缓存
2.1 Etag/If-None-Match Etag字符串 由服务器生成,If-None-Match 一个条件是的请求首部,
如果请求中有这个字段,则服务端如果没有匹配的ETag,返回200,并将资源返回,否则304。
2.1 If-Modified-Since 请求首部,当带有该字段时,服务端会检查Last-Modifued,
如果Last-Modifued时间早于等于If-Modified-Since,则返回304,否则返回新资源
浏览器缓存
最新推荐文章于 2022-07-26 12:36:52 发布