文章目录
一、缓存解决的问题
- 冗余数据传输
- 带宽瓶颈
- 瞬间拥塞
- 距离时延
二、缓存时延
可以用已有副本的某些到达缓存的请求提供服务。这杯称为缓存命中
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
可以配置缓存,使其提供一些陈旧的对象,以提高性能