HTTP权威指南-缓存机制算法

缓存机制详细算法

缓存只需要计算两个值:已缓存副本的使用期(age),和已缓存副本的新鲜生存期(freshness lefetime

使用期就是自从服务器将其发送出来(或者最后一次被服务器再验证)之后“老去”的总时间(!服务器总是记录所有文档的最新版本)。但是缓存可能不知道文档是来自上游缓存还是来自服务器的,所以它不能假设文档是最新的。它必须根据显式的Age首部(优先),或者通过对服务器生成的Date首部处理,来确定文档的使用期。

新鲜生存期表明,已缓存副本在经过多长时间之后,就会因新鲜度不足而无法再向客户端提供了。新鲜生存期考虑了文档的过期日期,以及客户端可能请求的任何新鲜度覆盖范围。

  //伪代码:
  //1表面使用期是基于Data首部的
  //表面使用期 = max(0,服务器响应时间-Data首部时间) 
  //表面使用期 = 当前时间-发送文档的时间,因计算机时钟设置的差异,
  //得到结果可能有差异,出现负值,所以需要取零来判断
  apparent_age = max(O, time_got_response - Date_header_va1ue);
  //2逐跳使用期计算
  //实际表面使用期 = max(表面使用期,Age首部时间)
  corrected_apparent_age = max(apparent_age, Age_header_va1ue);
  //3延迟补偿
  //估计响应的延迟 = 服务器响应时间 - 确认应答时间
  response_de1ay_estimate = (time_got_response - time_issued_request);
  
  //文档在缓存中停留的时间 = 实际表面使用期+估计响应时间
  age_when_document_arrived_at_our_cache =
  	corrected_apparent_age + response_de1ay_estimate;
  //拷贝完成到缓存时长 = 当前时间-响应时间
  how_long_copy_has_been_in_our_cache = current_time - time_got_response;
  //总使用期 = 文档在缓存中停留的时间+拷贝完成到缓存时长
  age = age_when_document_arrived_at_our_cache +
  	how_1ong_copy_has_been_in_our_cache;


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值