接入加速后源站压力没降多少,监控里命中率长期在四成左右。乍看像缓存或者权限的锅,追下去往往不是。
Cache-Control: public, max-age=86400 # 忽略参数 # 缓存键规则中排除 utm_* 与 _t
追下去是这么回事:大量请求带随机参数或未设置缓存头,节点无法复用同一份内容。
碰到「CDN 命中率」这类问题,我习惯先把当前配置原样备份一份,改坏了立刻换回来,不用现场推。测试环境和线上的差别,往往就在版本号和那几行被忽略的配置上。
线上出问题先对时间点,跟发布、备份、任务执行的时刻排一排,能省掉一半功夫。日志级别临时调高可以,记得改回去,长期开着既占磁盘又掩盖真问题。
权限不要一口气开到最大,先加到够用再往上试,范围小才好收。把复现步骤压到三条以内,交给同事也能跑出来,才算真的定位清楚。
具体做法是,统计未命中的 URL 特征;忽略无关查询参数;为可缓存类型补齐缓存头。
验收就看一点,命中率提升到八成以上,源站带宽明显下降。