站点运营

站点运营: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 日誌和源站日誌最好一起看。只看其中一份,容易把“邊缘命中舊缓存”誤判成“蜘蛛根本不来抓”,進而做出错誤的調整方向。