边缘缓存
渲染走 Cloudflare Cache API(caches.default),做边缘缓存:同一 URL 第一次完整渲染, 第二次直接命中,Worker 进程 0 CPU 消耗。
观测头 X-Cache
每次图像响应都带 X-Cache,用于判断这次走了边缘还是重新渲染:
| 值 | 含义 |
|---|---|
HIT | 命中边缘缓存,未重新渲染(0 CPU) |
MISS | 未命中,已完整渲染并写入缓存 |
BYPASS | 未写入缓存(见下) |
bash
curl -sI "https://og.159499.xyz/og/base?title=Hi" | grep -i x-cache
# 第一次:X-Cache: MISS
# 第二次:X-Cache: HIT缓存键
以**完整请求 URL(含全部 query)**为键。因此不同 width / height / format / theme / 字段 天然分开——改任意一个参数就是不同的缓存条目。
什么不缓存
以下情况响应标记 BYPASS,不写入缓存:
debug=1:调试响应不能被缓存干扰,且Cache-Control: no-store。- 非 2xx 响应(4xx / 5xx):避免把错误响应缓存住、放大 bug 可见时长。
Cache-Control
- 正常图像:
immutable, max-age=1y(库默认)。 debug=1:no-store, no-cache。
生产响应的
X-Render-Ms恒为0(performance.now()在 CPU 计算期冻结), 权威渲染耗时看wrangler tail的cpuTime。缓存命中时本就不消耗 CPU。