搜尋抓取

渲染资源也在抓取名單里:图片、CSS 和 JS 怎么占用蜘蛛的抓取額度

蜘蛛抓取 HTML 之後,往往還會為渲染再請求 CSS、JS、字体和图片,這些請求同样落在同一個主机上,和頁面共享抓取額度。本文說明哪些资源會被抓、资源請求怎样影响抓取节奏,以及從缓存配置和日誌排查上可以做哪些整理。

搜尋抓取

渲染资源也在抓取名單里:图片、CSS 和 JS 怎么占用蜘蛛的抓取額度

蜘蛛抓取的不只是 HTML

很多站点把注意力放在頁面 URL 上,日誌里却能看到大量 .css、.js、.jpg、.woff2 的請求同样来自蜘蛛。原因不复杂:搜尋引擎要渲染頁面,就得把頁面引用的资源一起取回来。這些請求和你關心的 URL 共用同一個主机,自然也會占用抓取額度。

對小站来说,资源抓取通常不构成問题;但当頁面數量、模板复杂度、图片体积都上来之後,资源請求可能占到總抓取量的一大块,頁面被抓的节奏就會受影响。

哪些资源會被抓,哪些基本不會

  • 會被抓:HTML 里直接引用的 CSS 和 JS、頁面中的 img 與 srcset、CSS 里的背景图、字体文件、预加载资源,以及渲染過程中由 JS 動態插入的图片等。
  • 一般不會被抓:没有被任何頁面引用的静態文件、被 robots.txt 屏蔽的资源、只存在于备份目錄里的文件。
  • 第三方域名上的资源(公共 CDN、字体库)會被抓,但計入對方域名的抓取,不會直接挤占你站点的額度。

有一点容易踩坑:為了“节省額度”在 robots.txt 里屏蔽 CSS 和 JS,结果蜘蛛渲染出的頁面缺样式、缺内容,反而更糟。渲染完整通常比省下几次资源請求更重要。

资源抓取怎么影响抓取节奏

影响主要来自三方面:數量、体积和响應质量。模板里塞了几十個阻塞渲染的脚本,或者每張图都是几 MB 的原图,蜘蛛每抓一個頁面都要額外等很多次下载。资源出現 5xx、超时或重定向鏈,也會拖慢整條抓取路径。

缓存配置是性價比最高的一环。给静態资源設定較長的 Cache-Control 有效期,並用带版本号的文件名做更新,蜘蛛在後續抓取中可以复用缓存,减少重复下载。ETag 和 Last-Modified 也能帮上忙。

可以從這些地方開始整理

  1. 統計模板里阻塞渲染的 CSS、JS 數量,能合並的合並,能延後的加上 defer 或 async。
  2. 压缩图片、按展示尺寸切图,避免在 CSS 里引用巨大的背景图。
  3. 给静態资源配置長缓存和版本化文件名,减少重复請求。
  4. 不要在 robots.txt 里屏蔽 CSS、JS 和图片目錄。
  5. 检查资源是否出現 404 或多次跳轉,在日誌里按狀態碼筛一遍。
  6. 如果资源請求占比确實很高,可以考虑把图片、字体放到獨立域名或 CDN,把請求分散到不同主机。

用日誌確認實际比例

把服務器日誌按 User-Agent 過滤出搜尋引擎的請求,再按扩展名或响應類型聚合,就能大致看出頁面請求與资源請求的比例、资源的平均响應時間,以及哪些资源在反复 404。搜尋控制台的抓取統計里也有按用途分類的資料,可以用来交叉驗證。

资源被抓本身不是坏事,渲染完整才有助于蜘蛛理解頁面内容。真正需要處理的,只是那些没有意义又反复占用額度的請求。