作者回复: 很好的问题,我这里做了很多简化,应该在PPT上加个注释比较好:-) 1、now是响应2发出时的当前时间,因此请求2的Age=response_time1-date1+now-response_time1=now-date1。这个你应该没有问题。 2、now2是代理接收到响应2的时间,也就是response_time2, 故Age=now-date1+response_time2-request_time2+now2-response_time2=now-date1-request_time2+now2, 这里我把now替换为response_time2,故 Age=response_time2-date1-request_time2+now2,我又把它整理为now2-date1+response_time2-request_time2,是为了方便大家理解,now2-date1才是最关键的,因为response_delay可能只是一个极小值。 3、now3是响应3发出的时间,此时重复第2步,把response_time2改成now3即可。
作者回复: 有个前提:now2=response_time2。 1、now是响应2发出时的当前时间,因此请求2的Age=response_time1-date1+now-response_time1=now-date1。 2、now2是代理接收到响应2的时间,也就是response_time2, 故Age=now-date1+response_time2-request_time2+now2-response_time2=now-date1-request_time2+now2, 这里我把now替换为response_time2,故 Age=response_time2-date1-request_time2+now2,我又把它整理为now2-date1+response_time2-request_time2,是为了方便大家理解,now2-date1才是最关键的,因为response_delay可能只是一个极小值。 3、now3是响应3发出的时间,此时重复第2步,把response_time2改成now3即可。
作者回复: 防止网络中发送大包体耗时过长,宁可cache用不了,也不能让本该过期的cache还能使用
作者回复: 你是说响应3么?它实际计算时不会用到date1,而是用它收到时的Age来计算 。我特意对照出源服务器中的date1,只是为了说明:Age决定性的数值是从源服务生成响应那个时间算起。
作者回复: 是的。参见RFC文档:“If the response has a Last-Modified header field, caches are encouraged to use a heuristic expiration value that is no more than some fraction of the interval since that time. A typical setting of this fraction might be 10%.”
作者回复: google把查看chrome缓存的命令从最新版本移除了。你可以在65老版本之前的chrome浏览器上用chrome://cache或者chrome://view-http-cache查看缓存大小。是的。
作者回复: 不可以,因为发出响应2时,还没有response_time2这个时间,因为只有接收到响应才有response_time2这个概念。