21.3 命中率测量

来源:互联网 发布:秋季女装蕾丝新款淘宝 编辑:程序博客网 时间:2024/05/21 09:56
  • 原始服务器通常会出于计费的目的保留详细的日志记录。内容提供者需要知道 URL 的受访频率,广告商需要知道广告的出现频率,网站作者需要知道所编写的内容的受欢迎程度。客户端直接访问 Web 服务器时,日志记录可以很好地跟踪这些信息。
  • 缓存服务器位于客户端和服务器之间,用于防止服务器同时处理大量访问请求(这正是缓存的目的)。缓存要处理很多 HTTP 请求,并在不访问原始服务器的情况下满足它们的请求,服务器中没有客户端访问其内容的记录,导致日志文件中出现遗漏。
  • 由于日志数据会遗失,所以,内容提供者会对其最重要的页面进行缓存清除(cache bust)。缓存清除是指内容提供者有意将某些内容设置为无法缓存,这样,所有对此内容的请求都会被导向原始服务器。于是,原始服务器就可以记录下访问情况了。不使用缓存可能会生成更好的日志,但会减缓原始服务器和网络的请求速度,并增加其负荷。
  • 由于代理缓存(及一些客户端)都会保留自己的日志,所以如果服务器能够访问这些日志(或者至少有一种粗略的方式可以判断代理缓存会以怎样的频率提供其内容),就可以避免使用缓存清除。
  • 命中率测量协议是对 HTTP 的一种扩展,它为这个问题提供了一种解决方案。命中率测量协议要求缓存周期性地向原始服务器汇报缓存访问的统计数据。RFC 2227 详细定义了命中率测量协议。

1. 概述

  • 命中率测量协议定义了一种 HTTP 扩展,它提供了一些基本的功能,缓存和服务器可以实现这些功能来共享访问信息,规范已缓存资源的可使用次数。
  • 缓存给日志访问带来了问题,命中率测量并不是这个问题的完整解决方案,但它确实提供了一种基本方式,以获取服务器希望跟踪的度量值。
  • 命中率测量协议并没有 (而且可能永远都不会)得到广泛的实现或应用。也就是说,在维护缓存性能增益的同时,像命中率测量这样的合作方案会给出一些提供精确访问统计信息的承诺。

2. Meter 首部

  • 命中率测量扩展建议使用新增加的首部 Meter,缓存和服务器可以通过它在相互间传输与用法和报告有关的指令,这与用来进行缓存指令交换的 Cache-Control 首部很类似。
  • 命中率测量指令:
    这里写图片描述
  • 下图给出了一个执行中的命中率测量实例。事务的第一部分就是客户端和代理缓存之间一个普通的 HTTP 事务,但在代理请求中,要注意有插入的 Meter 首部和来自服务器的响应。这里,代理正在通知服务器它可以进行命中率测量,作为回应,服务器则请求代理报告它的命中次数。从客户端的角度来看,请求正常结束了,代理开始代表服务器跟踪该请求资源的命中次数。稍后,代理会尝试与服务器再次验证资源。代理会在发送给服务器的条件请求中嵌入它跟踪记录的计量信息。
    这里写图片描述
原创粉丝点击