浏览器发起一个请求,会先看看该请求是否存在缓存,是否足够新鲜,服务器再验证是否通过。
这有四条路,三个缓存知识点:200/from cache/304 Not Modified
具体如下图所示:
缓存.png
问题:
- 怎么判断缓存足够新鲜?
- 怎么与服务器进行再验证?
答案:
- 通过响应头的Cache-Control和Expires来校验缓存是否足够新鲜。
- 通过Last-modified和Etag来与服务器进行再验证。
答案1详细解答:
- Expires是绝对日期,是HTTP/1.0+的首部;Cache-Control是相对时间,是HTTP/1.1的首部
- 通过Expires或Cache-Control的响应首部,原始服务器对每个文档加了"过期日期"
- 两者一起使用,Cache-Control优先级更高
- Cache-Control相对最后修改时间
答案2详细解答:
- 过期后,请求到了服务器,服务器通过查看该文件的Last-modified或Etag来校验该文件是否有修改过
- Etag是服务器生成并返回的随机令牌,通常是文件内容的哈希值或某个其他指纹
网友评论