一 缓存新鲜度的四种计算方式
① 判断缓存是否过期
案例: 同时出现'Cache-Control: max-age'和'Expires'响应头哪个生效? --> "前者优先级高"
② 为什么要预估缓存时间
背景:
1) 网络中'55%'的请求'没有'携带max-age,也即告诉客户端'要不要'缓存
2) 而有一些'内容'是相对'不怎么变化'的,比如:'图片'、'css'等
3) server端由于'配置'问题,没有进行相关'缓存配置'优化的问题
4) 浏览器决定'要'缓存,缓存'多长'时间?
5) 通常是基于'RFC7234规范中'推荐的值来做一些修改
③ Age响应头部及current_age的计算方式
+++++++++++ "Age响应头的理解" +++++++++++
1) age当'代理服务器'用自己'缓存的实体'去响应'客户端'请求时
2) 用该头部表明'该实体从产生(从源服务器获取)'到'现在客户端请求'经过多长时间了
④ 代理服务器缓存中的Age头部
Date:表示'响应(消息)'发送的时间,时间的'描述格式'由RFC822定义
例如: Date: Thu, 11 Jul 2022 15:33:24 GMT
++++++++++++ "分割线" ++++++++++++
本文通过'复杂的多级[假定两级]代理服务器案例'进行讲解
说明:
1) 跟'last-modified'响应头'无关'
2) 多级代理服务器都可能会'缓存'
3) 假设'ntp时钟源'是'一致'的
[1]、now是'客户端'当前时间
[2]、response_time 是'客户端'接收响应的时间
[3]、用resident_time表示响应'在缓存中'贮存的时间
4) 按照'请求1(黄色)' --> '请求2' --> '请求3' 顺序来理解
+++++++++++++ "杂谈" +++++++++++++
Date: 源服务器发出响应的时间
代理服务器接收响应以后,把'响应'存放到缓存中
初始age: 也即'current_inital_age'
⑤ 小结 辨证的理解
关键: 理解计算'思路',暂时可以不用'追求'细节,把'框架'搭建起来,了解'背后设计理念'