Web缓存原理
目标:在不涉及原始服务器的情况下满足客户端HTTP请求
如何使用?
- 用户配置浏览器:Web访问经过缓存
- 所有HTTP请求指向缓存
- 对象在缓存中:缓存器返回对象
- 否则缓存器向起始服务器发出请求,接收对象后转发给客户机
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jizmzbqD-1592018307322)( https://picreso.oss-cn-beijing.aliyuncs.com/proxy.png)]
- 缓存服务器既是服务器又是客户机
为什么要用Web缓存器?
- 减少对客户机请求的响应时间
- 减少内部网络与接入链路上的通信量
- 能从整体上大大降低因特网上 的Web流量
Web缓存举例
基础
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ghEpzufV-1592018307323)( https://picreso.oss-cn-beijing.aliyuncs.com/proxy3.png)]
-
假设
- 对象平均长度 = 100,000 bits
- 浏览器对对象的平均访问速率= 15/sec
- 因特网时延= 2 sec
-
结论
- 局域网上的流量强度 = 0.15
- 链路上的流量强度 = 1
- 总延时 = 因特网时延 + 接入时延 + 局域网时延= 2秒+数分钟+数毫秒
可以看到相当大的延时,如何解决呢?
进阶
增加接入链路的带宽
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-y1VBGP91-1592018307324)( https://picreso.oss-cn-beijing.aliyuncs.com/proxy2.png)]
结论:
-
局域网上的流量强度 = 15%
-
链路上的流量强度 = 15%
-
总时延 = 因特网时延 + 接入时延 + 局域网时延= 2 秒 +数毫秒+数毫秒
-
这种方案需要较大的投资
优秀
安装缓存器
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bAcRTuPw-1592018307326)( https://picreso.oss-cn-beijing.aliyuncs.com/proxy1.png)]
假设缓存器命中率为0.4
结论
-
40%的请求立即会得到响应
-
60 %的请求通过访问起始服务器满足
-
链路上的流量强度减为0.6,可以忽略不 计
-
总的平均延时=因特网时延+接入时延+ 局域网时延
=0.6*2 秒 + 数毫秒< 1.4 秒
降低了成本,加快了速度
条件GET方法
虽然我们说我们访问某些对象,那么如何保证缓存服务器上的对象时最新的呢?使用一种特定的GET方法。
缓存服务器也是客户机,为了确保缓存服务器上的数据是最新的,它会发送条件GET到原始服务器上
-
目的: 证实缓存器中的对象是否为最新
-
缓存器: 在请求报文中包含对象最后修改时间 If-modified-since:
-
服务器: 如果对象是最新的则响应报文中不包含对象:
HTTP/1.0 304 Not Modified
简单的举例:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hFpsoMCI-1592018307327)( https://picreso.oss-cn-beijing.aliyuncs.com/proxy4.png)]
-
如果没被修改 原始服务器则返回304给缓存服务器 缓存服务器就可以使用缓存
-
如果被修改 服务器则返回最新数据给缓存服务器,更新缓存
希望通过这篇文章,让你了解了Web缓存。