判断缓存是否过期
- response_is_fresh = (freshness_lifetime > current_age)
- freshness_lifetime:按优先级,取一下响应头部的值
- s-maxage > max-age > Expires > 预估过期时间 ```markdown Cache-Control: s-maxage=3600
Cache-Control: max-age=86400
Expires: Fri, 03 May 2019 03:15:20 GMT
Expires = HTTP-date, 指明缓存的绝对过期时间 ```
Age 头部及current_age的计算
- Age表示自源服务器发出响应(或者验证过期缓存),到使用缓存的响应发出时时经过的秒数
- 对于代理服务器管理的共享缓存,客户端可以根据Age头部判断缓存时间
- Age = delta-seconds
- current_age计算:current_age = corrected_inital_age + resident_time
- resident_time = now - response_time(接收到响应的时间)
- corrected_inital_age = max(apparent_age, corrected_age_value);
- corrected_age_value = age_value + response_delay;
- response_delay = response_time - request_time(发起请求时间)
- apparent_age = max(0, response_time - date_value);
- corrected_age_value = age_value + response_delay;