常见問题

蜘蛛池入口頁被 CDN 缓存,新加的目标 URL 還能被搜尋蜘蛛發現吗

入口頁接入 CDN 後,缓存命中會直接返回舊版本 HTML,搜尋蜘蛛請求时可能看不到新加的目标 URL。本文說明缓存影响 URL 發現的原理、如何通過响應头和回源日誌判断問题、常见的缓存策略調整方式,以及刷新缓存时容易踩的坑,帮助把入口頁更新节奏和抓取节奏對上。

常见問题

蜘蛛池入口頁被 CDN 缓存,新加的目标 URL 還能被搜尋蜘蛛發現吗

入口頁接入 CDN 是很常见的做法,能降低源站压力、加快响應。但不少运营者會遇到一種情况:明明已经在源站给入口頁加了新的目标 URL,搜尋蜘蛛却像没看到一样。這往往不是連結本身有問题,而是搜尋蜘蛛拿到的是 CDN 缓存的舊版 HTML。

搜尋蜘蛛只會看到它拿到的那份 HTML

搜尋蜘蛛本质上是普通的 HTTP 客戶端,它請求入口頁时,得到什么响應体就解析什么連結。如果請求命中了 CDN 邊缘节点缓存,节点會直接返回缓存副本而不回源,源站上新加的連結就不會出現在這次响應里。也就是说,URL 發現的起点是响應内容,而不是源站文件

怎么判断是不是缓存導致的

  • 用带搜尋蜘蛛 UA 的請求直接訪問入口頁 URL,查看返回的 HTML 里是否包含新連結。
  • 观察响應头里的缓存标识,例如 AgeX-Cache: HIT/MISSCF-Cache-Status 等,判断這次請求是否走了缓存。
  • 對比 CDN 域名與源站直连返回的 HTML,如果两者不一致,基本可以確認是缓存版本陈舊。
  • 在源站訪問日誌里篩選搜尋蜘蛛的 UA,如果長時間没有回源记錄,說明請求大多被邊缘节点消化了。

比較稳妥的處理方式

  1. 给入口頁 HTML 設定較短的缓存時間,例如几分钟到十几分钟;静態资源可以單獨設定較長缓存,两者分開配置。
  2. 更新入口頁後主動刷新 CDN 缓存,多节点部署时注意刷新范围,避免只刷新了個別节点。
  3. 如果入口頁内容更新频繁,可以考虑對 HTML 關閉缓存,或設定成需要回源校驗的模式。
  4. 連結變更後,把 URL 提交接口或 sitemap 作為补充渠道,让發現不只依赖入口頁這一次响應。

几個容易踩的坑

第一,為了绕過缓存给入口頁 URL 加随机參數,會制造出大量内容相同的地址,反而不利于抓取效率。第二,缓存副本里可能還留着已经刪除的連結,搜尋蜘蛛抓到後得到 404,白白消耗抓取配額。第三,多地 CDN 节点缓存刷新時間不一致,可能出現不同地区的搜尋蜘蛛看到不同版本入口頁的情况,排查时要多节点對比,不要只看一次請求的结果。

入口頁的更新能否被發現,取决于搜尋蜘蛛那次請求實际拿到的 HTML。缓存策略、刷新動作和日誌核對這三件事配合好,URL 發現的节奏才相對稳定。

日常检查清單

  • 入口頁 HTML 的缓存时長是否與更新频率匹配
  • 更新後是否执行了缓存刷新,並用带蜘蛛 UA 的請求复核過
  • 响應头里的缓存狀態是否正常,是否長期 HIT 不回源
  • 缓存副本中是否残留已经失效的連結
  • 源站日誌里搜尋蜘蛛的回源是否規律