HTTP 缓存路径实验
一次请求,会在哪一层结束?
你看见页面了,不代表源站收到了请求;你看见 304,也不代表页面没有正文。先设定各层副本的状态,再亲手跟一遍路径。
请求路径
私有缓存
共享缓存
源站
浏览器
当前用户的私有缓存
过期副本
CDN 边缘
靠近用户的共享缓存
过期副本
源站
生成或验证最终响应
内容未变
判定终点源站
状态码304
页面正文来自浏览器旧副本
估算网络传输1.4 KB
访问源站是 · 1 次
正在发生什么
同一个页面,四种成本
估算值用来比较路径,不代表所有现实网络的固定延迟。
| 情形 | 判定终点 | 页面正文来源 | 估算延迟 | 回源 | 估算传输 | 操作 |
|---|---|---|---|---|---|---|
| 冷启动 · 无副本 | 源站 · 200 | 源站新正文 | 约 148 ms | 1 次 | 82 KB | |
| 浏览器命中 · 新鲜 | 浏览器 · 本地复用 | 浏览器副本 | 约 1 ms | 0 次 | 0 KB | |
| CDN 命中 · 新鲜 | CDN · 200 | CDN 副本 | 约 32 ms | 0 次 | 82 KB | |
| 304 验证 · 未变 | 源站 · 304 | 浏览器旧副本 | 约 104 ms | 1 次 | 1.4 KB |
i
“状态码”和“正文来源”不是同一个指标。
304 不携带页面正文,浏览器用本地副本组装出最终页面;CDN 命中则可以返回带正文的 200,但依然没有回源。