图片请求每次都带 t=1730000000 和 utm_source,边缘命中率只有 4%,回源带宽打满,源站 CPU 到 90%。日志里能对上时间点,这种反而好排。
缓存键按完整 URL 计算,时间戳每秒都变,每个请求都是新键。前端埋点脚本又给图片追加了来源参数,把键进一步打散。这一点先确认清楚,后面就不用反复试。
# 缓存键规则示例:忽略 t 与 utm_* curl -sI 'https://cdn.example.com/a.jpg?t=1730000000&utm_source=x' # 对比两次不同 t 的 X-Cache 头
围绕「URL 参数污染缓存」排查时,命令行跑一遍比在面板里点十次有用,面板会替你做掉不少隐式操作。偶发问题先统计频率,一小时几次和一天一次,查法完全不同。
改完顺手把文档补一句,省得下次自己重新推一遍。监控和日志的时间要对上,时区不一致会多绕很大一圈。
临时改动用注释写上日期和原因,过两周自己都记不清为什么这么写。
处理上按这个顺序:把缓存键配置成忽略 t 和 utm 开头的营销参数;让前端别给图片拼时间戳,需要换图就改文件名;观察一天的命中率曲线,确认回到 85% 以上再收工。
结果对不对很好判断,两个不同时间戳的地址第二次请求都返回 X-Cache: HIT。
