关于Web缓存

Web缓存原理

目标:在不涉及原始服务器的情况下满足客户端HTTP请求

如何使用?

  • 用户配置浏览器:Web访问经过缓存
  • 所有HTTP请求指向缓存
    • 对象在缓存中:缓存器返回对象
    • 否则缓存器向起始服务器发出请求,接收对象后转发给客户机

  • 缓存服务器既是服务器又是客户机

为什么要用Web缓存器?

  • 减少对客户机请求的响应时间
  • 减少内部网络与接入链路上的通信量
  • 能从整体上大大降低因特网上 的Web流量

Web缓存举例

基础

  • 假设
    • 对象平均长度 = 100,000 bits
    • 浏览器对对象的平均访问速率= 15/sec
    • 因特网时延= 2 sec
  • 结论
    • 局域网上的流量强度 = 0.15
    • 链路上的流量强度 = 1
    • 总延时 = 因特网时延 + 接入时延 + 局域网时延= 2秒+数分钟+数毫秒

可以看到相当大的延时,如何解决呢?

进阶

增加接入链路的带宽

结论:

  • 局域网上的流量强度 = 15%

  • 链路上的流量强度 = 15%

  • 总时延 = 因特网时延 + 接入时延 + 局域网时延= 2 秒 +数毫秒+数毫秒

  • 这种方案需要较大的投资

优秀

安装缓存器

假设缓存器命中率为0.4

结论

  • 40%的请求立即会得到响应

  • 60 %的请求通过访问起始服务器满足

  • 链路上的流量强度减为0.6,可以忽略不 计

  • 总的平均延时=因特网时延+接入时延+ 局域网时延=0.6*2 秒 + 数毫秒< 1.4 秒

降低了成本,加快了速度

条件GET方法

虽然我们说我们访问某些对象,那么如何保证缓存服务器上的对象时最新的呢?使用一种特定的GET方法。

缓存服务器也是客户机,为了确保缓存服务器上的数据是最新的,它会发送条件GET到原始服务器上

  • 目的: 证实缓存器中的对象是否为最新

  • 缓存器: 在请求报文中包含对象最后修改时间 If-modified-since:

  • 服务器: 如果对象是最新的则响应报文中不包含对象:

    HTTP/1.0 304 Not Modified

简单的举例:

  • 如果没被修改 原始服务器则返回304给缓存服务器 缓存服务器就可以使用缓存

  • 如果被修改 服务器则返回最新数据给缓存服务器,更新缓存

希望通过这篇文章,让你了解了Web缓存。

Default image
LIU
代码是躯体,思想是灵魂

Leave a Reply