搜尋抓取

蜘蛛抓取静態资源:CSS、JS 和图片该不该放開

蜘蛛抓取頁面时也會請求 CSS、JS、图片等静態资源,這些請求既占用连接與带宽,也直接决定渲染後能看到多少内容和連結。本文梳理哪些资源應当放開抓取、哪些可以限制,资源响應慢會怎样拖累整站抓取,以及几項可以立刻执行的检查。

搜尋抓取

蜘蛛抓取静態资源:CSS、JS 和图片该不该放開

很多站長盯日誌时只看 HTML 請求,却忽略了同一批抓取里還夹着大量 CSS、JS、图片和字体請求。這些资源同样占用服務器的连接數、带宽和响應時間,而且會直接影响蜘蛛渲染頁面後能看到什么。资源该不该放開抓取,是抓取優化里最容易被跳過的一环。

蜘蛛為什么會去抓静態资源

原因主要有三類,理解清楚這三類,才好决定放開還是限制。

  • 渲染需要:現代搜尋引擎會执行頁面里的 JS。如果正文、價格、库存等内容由 JS 生成,JS 文件取不到,蜘蛛看到的可能就是空壳。
  • 連結發現:部分站点的導航、分頁、相關推荐由 JS 注入。只有脚本正常执行,這些新 URL 才會進入發現队列。
  • 资源本身可被索引:图片、视频文件會被图片和视频搜尋單獨收錄,這類請求並非浪費。

先分清:哪些资源可以限制

适合限制的资源

  • 模板里遗留、頁面上並没有真正引用的舊版 CSS、JS 备份文件。
  • 构建产物中的 sourcemap、開發調试文件、日誌和临时目錄。
  • 同一張图的多種缩略尺寸,如果原图已经可以被抓取。
  • 後台、測試环境暴露在公網上的资源目錄。

這些内容用 robots.txt 指向具体目錄做 Disallow 即可,不必整站屏蔽 /*.js 這類宽泛規則。

不适合屏蔽的资源

  • 主样式表和主脚本,尤其首屏渲染依赖的那几個文件。
  • 返回正文内容、分頁資料的内容接口。
  • 影响布局判断的字体文件,若缺失會導致内容被判定為隐藏,就要谨慎。

把主 CSS、JS 一並屏蔽,常见後果是蜘蛛渲染出的頁面排版错乱、折叠内容被当成不可见,或者干脆抓不到异步加载的連結。

资源變慢,會拖累整站抓取

蜘蛛渲染頁面时會等待资源返回。單個文件長時間無响應,渲染可能提前結束,後面的内容和連結就都拿不到。更麻烦的是,资源請求和 HTML 請求共用同一批连接,静態资源慢下来,HTML 的抓取节奏也會被拖慢。

几個常见诱因:资源没有走 CDN、合並後的單個大文件成為單点、图片未压缩導致体积過大、第三方統計脚本超时。排查时先看日誌里资源請求的响應時間分布,再和 HTML 的平均响應時間對比,差距明顯的地方通常就是瓶颈。

几個可以马上执行的動作

  1. 按文件扩展名統計日誌,看看资源請求占全部抓取的比例是多少。
  2. 筛出返回 404 的资源,模板里引用了已刪除的文件,蜘蛛每来一次就白白請求一次。
  3. 核對 robots.txt,確認没有誤屏蔽主 CSS、JS 和内容接口。
  4. 對确實無用的资源目錄,加一條 Disallow,並观察後續日誌變化。
  5. 把资源响應時間纳入日常监控,而不是只看首頁能不能打開。

改完之後怎么驗證

改 robots.txt 之後不要只看文件本身,要用平台提供的抓取測試工具單獨跑几個關键頁面,確認渲染结果里正文和連結都在。之後對比前後日誌:如果非必要资源請求下降、HTML 請求占比上升,說明方向對了;如果發現頁面内容反而變少,就要检查是不是屏蔽得太宽。

资源抓取既不是越多越好,也不是一律屏蔽。判断标准只有一條:這個文件是否影响蜘蛛對頁面内容與連結的理解。