HTTP权威指南(四)缓存

发布于:2023-01-20 ⋅ 阅读:(270) ⋅ 点赞:(0)

一、缓存解决的问题

  • 冗余数据传输
  • 带宽瓶颈
  • 瞬间拥塞
  • 距离时延

二、缓存时延

可以用已有副本的某些到达缓存的请求提供服务。这杯称为缓存命中

1.再验证

缓存的内容会不时的刷新,所以需要定时地检检查缓存的新鲜度

(1)If-Modified-Since首部
再验证命中,如果服务器对象未被修改,服务器会向客户端发送一个小的HTTP 304 Not Midified 响应.
再验证未命中 返回HTTP 200 OK
对象被删除 404 Not found!
2.文档命中率
由缓存提供服务的请求所占的比例被称为缓存命中率
3.字节命中率
缓存提供的字节在传输的所有字节中所占比例
4.区分命中和未命中情况
通过Date首部的时间,如果Date的时间比当前日期早,说明缓存命中

三、缓存的拓扑结构

1.私有缓存

一般很小,如浏览器缓存

2.公有代理缓存

3.代理缓存的层次结构

(1)网状缓存

  • 根据URL在夫缓存或原始服务器之间进行动态选择
  • 根据URL动态地选择一个特定的父缓存
  • 前往父缓存之前,在本地缓存中搜索已缓存的副本
  • 允许其他缓存对其缓存的部分内容进行访问,但不允许因特网流量通过它们的缓存

四、缓存的处理步骤

1.HTTP报文的处理过程

(1)接收
(2)解析
(3)查询
(4)新鲜度检测
(5)创建响应
(6)发送
(7)日志

五、保持副本的新鲜度

1.文档过期

通过特殊的HTTPCache-Control首部和Expires首部,HTTP让原始服务器向每个文档附加了一个"过期日期",达到过期时间后,查询文件是否被修改,否则需要获取一份新鲜的副本

六、控制缓存的能力

1.no-Store 和 no-Cache

no-Store 和 no-Cache首部可以防止缓存提供未经证实的已缓存对象

2.max-age

表示从服务器将文档传来之时起,可以认为此文档处于新鲜状态的秒数

3.Expires(不推荐使用)

指定的是实际的过期日期而不是秒数

4.must-revalidate

可以配置缓存,使其提供一些陈旧的对象,以提高性能

本文含有隐藏内容,请 开通VIP 后查看