核对网站缓存日志时,最该盯住的是能区分“命中、回源、未缓存”的字段,而不是只看状态码。建议优先检查缓存结果标识、请求URL、响应状态、缓存键相关字段、回源标记、缓存年龄与过期时间这几类信息。只有这些字段齐全,才能判断一次请求到底由缓存直接返回,还是穿透到了源站。
网站缓存可能出现在浏览器、CDN边缘节点、反向代理或应用层。不同层能记录的字段不一样,核对前要先确认日志来源,否则会把“没有该字段”误判成“没有命中”。
适用前提是你能拿到原始日志或可查询的日志平台。如果只有汇总报表,字段粒度往往不足以定位单次请求。
下面这些字段是判断缓存行为的核心。名称可能因缓存软件或服务商不同而变化,核对时按含义对应,不要死记字段名。
HIT、MISS、BYPASS、EXPIRED。它直接回答请求是否由缓存返回。200 不一定代表命中,304 也不等于回源。必须和缓存结果标识一起看。Age、Expires、Cache-Control 中的 max-age 能解释对象为何被重新拉取。GET 与 HEAD 的缓存行为可能不同,HTTP 与 HTTPS 也要分开统计。如果日志里缺少缓存结果标识,可以先用响应头中的缓存相关字段做交叉验证,再决定是否调整日志格式。
假设某条日志显示:请求路径为 /article?id=12,缓存结果为 MISS,响应状态为 200,同时带有回源标记。这只能说明这次请求没有命中缓存并到了源站,不能直接断定缓存配置错误。可能原因是对象首次请求、已过期,或者缓存键因查询参数不同而未复用。
判断步骤可以这样执行:
MISS 变为 HIT。MISS,检查响应头是否允许缓存,以及缓存键是否包含不必要的参数。HIT 但页面内容仍旧陈旧,再核对过期时间与刷新机制,而不是继续改缓存开关。验收信号是:相同缓存键的重复请求中,命中标识稳定出现,回源请求比例下降到符合预期的水平。这里的“符合预期”要结合业务更新频率判断,动态接口本来就不适合长时间缓存。
只看状态码:200 既可能来自缓存,也可能来自源站。没有缓存结果标识时,状态码单独不能证明命中。
把抓取限制当成缓存控制:robots.txt 的抓取限制不等于可靠的索引移除,也不等于控制缓存。缓存是否生效要看缓存规则与响应头。
忽略查询参数:带跟踪参数、排序参数或会话参数的URL,可能生成大量独立缓存键,导致看似“缓存没生效”。
混淆不同搜索引擎与平台:网页搜索、平台推荐和付费广告的抓取与缓存机制需要分别核查,日志字段含义也可能不同。
先固定一份最小字段集:缓存结果标识、完整URL、状态码、回源标记、缓存年龄、过期时间。用一周左右的日志做对比,找出高频 MISS 的URL模式,再判断是缓存键过细、过期时间过短,还是响应头不允许缓存。每次只改一个变量,改完后再用相同字段复查命中变化,避免把多个原因混在一起。