Server-Timing 响应头
Server-Timing 响应头:在响应里带上缓存状态、命中的缓存层、回源建连与首包耗时,在浏览器开发者工具里直接查看。
作用
打开后,节点在响应里追加一个 Server-Timing 头,写明这次请求的缓存状态、由哪一层缓存回答,以及节点连接上游和等到上游首包用了多少毫秒。源站自己返回的 Server-Timing 条目保留,节点只在后面追加。
使用场景
- 页面慢,想知道是缓存没命中,还是回源本身慢。
- 想确认某个请求是边缘节点缓存命中,还是由 L2 缓存回答。
- 对比不同时段或不同资源的回源建连和首包耗时。
在哪里配置
控制台:网站管理,选择网站,进入编辑,打开“高级设置”,在“其它”卡片里找到“Server-Timing 响应头”开关。开关单独保存,保存后在下一次发布时生效。
配置项
| 配置项 | 默认值 | 说明 |
|---|---|---|
| Server-Timing 响应头 | 关闭 | 网站级开关 |
响应头内容
| 条目 | 何时出现 | 内容 |
|---|---|---|
cdn-cache | 网站开了缓存 | desc 是节点的缓存状态,与 X-CDN-Cache 同值 |
cdn-hit-layer | 响应来自某一层缓存 | desc=edge:本节点命中;desc=l2:本节点未命中而 L2 命中 |
cdn-connect | 这次请求建了上游连接 | dur 是节点到上游建连的毫秒数 |
cdn-ttfb | 这次请求有上游响应 | dur 是节点发出请求到收到上游响应头的毫秒数 |
某一项不适用就不写;全部不适用时不加这个头。示例:
Server-Timing: cdn-cache;desc=MISS, cdn-hit-layer;desc=l2, cdn-connect;dur=3, cdn-ttfb;dur=41头里只有状态词和整数毫秒,不含节点名、节点地址、源站地址或租户标识。
常见问题
在哪里看到这个头
浏览器开发者工具的“网络”面板,选中请求后在响应头里查看,部分浏览器还会在“时间”页里按条目显示。
跨域脚本读不到
同源页面和开发者工具可以直接看到。要让其他来源的脚本读取,在网站的 HTTP 策略的响应头里自己加 Timing-Allow-Origin。
开了开关,响应里没有这个头
按顺序检查:配置保存后是否已经发布;目标节点是否已升级到支持该功能的版本,节点版本不够时发布页会列出需要升级的节点;网站是否处于攻击升级 B 级及以上,此时与缓存状态头一样不输出。
命中缓存的请求为什么没有 cdn-connect
没有回源就没有建连,也没有上游首包,这两项自然不出现。