站点运营

站点运营:CDN 与回源自查,别让蜘蛛在不同节点看到不一样的页面

接入 CDN 之后,用户和蜘蛛不再访问同一台服务器,缓存策略、回源配置、防护规则中的任何一处不一致,都可能让同一个 URL 返回不同内容。本文梳理常见的不一致来源、一份可执行的自查清单,以及内容更新后的缓存刷新收尾动作,帮助减少重复抓取和误判。

站点运营

站点运营:CDN 与回源自查,别让蜘蛛在不同节点看到不一样的页面

为什么 CDN 会让抓取结果变得不稳定

站点接入 CDN 之后,用户和搜索引擎蜘蛛看到的页面不再由同一台服务器直接生成。请求会先落到就近的边缘节点,命中缓存就直接返回,未命中才回到源站。这个过程中任何一环配置不一致,都可能让蜘蛛在不同时间、不同节点拿到不一样的 HTML:有的是新版本,有的是几天前的旧版本,有的干脆是错误页。

对蜘蛛来说,同一个 URL 返回差异过大的内容,轻则造成重复抓取、浪费抓取配额,重则让蜘蛛对页面判断出现偏差。下面这些点值得定期自查。

常见的不一致来源

缓存时间与更新节奏不匹配

如果 HTML 的缓存时间设置为几天甚至几周,而站点每天更新,蜘蛛很可能一直拿到旧版本。首页、栏目页这类更新频繁的页面,缓存时间应明显短于普通内容页;反过来,图片、样式表这类带指纹的静态资源,长缓存反而更合适。

缓存了不该缓存的响应

  • 把 404、410 页面缓存下来,源站已经恢复,边缘节点还在返回旧的错误页。
  • 把 5xx 或超时页面缓存住,形成“幽灵宕机”,蜘蛛反复来访都吃闭门羹。
  • 带参数的 URL 未做规范化处理,每个参数组合各缓存一份,凭空多出大量相似页面。

回源被拦截或指向错误

回源请求要经过源站的防火墙、WAF 或安全组。如果规则只放行了普通访客,而 CDN 官方公布的回源 IP 段没有加白,就会出现部分节点正常、部分节点报错的情况。改版换服务器后忘了更新回源地址,也会让蜘蛛抓到旧站内容。

按 UA 做差异化处理

按访客类型返回不同内容本身就有风险。如果对蜘蛛单独放行完整版、对普通用户返回简化页,很容易被判定为作弊,得不偿失。

一份可执行的自查清单

  1. 对比直连与走 CDN 的响应:先绑定源站 IP 直接请求,再通过域名请求,比较状态码、正文主体和关键字段是否一致。
  2. 看响应头:Age、X-Cache 一类字段能说明这次是命中还是回源,Age 过大意味着缓存偏旧。
  3. 多节点验证:借助多地区测试工具,从不同地域发起请求,确认返回内容没有区域性差异。
  4. 检查回源白名单:把 CDN 官方公布的回源 IP 段加入源站放行列表,并定期核对更新。
  5. 确认没有屏蔽蜘蛛 UA:部分防护策略默认拦截非浏览器 UA,需要显式放行主流搜索引擎。
  6. 核对缓存规则:HTML 短缓存或不缓存,静态资源长缓存,错误页设置较短缓存并避免长期驻留。
  7. 检查 HTML 改写:有些产品会做页面优化、脚本注入,确认这些改动不会影响正文和链接的可读性。

更新内容后的收尾动作

发布重要更新后,主动刷新相关 URL 的缓存,再确认边缘节点已经返回新版本。若站点使用了多层缓存或同时接入多家 CDN,注意逐层刷新,别只刷了最外层,里层仍是旧内容。

最后提醒一点:CDN 日志和源站日志最好一起看。只看其中一份,容易把“边缘命中旧缓存”误判成“蜘蛛根本不来抓”,进而做出错误的调整方向。