搜尋抓取

抓取不止頁面本身:CSS、JS 和图片在蜘蛛眼里占多少分量

蜘蛛抓的不只是 HTML。為了渲染和理解頁面,它還會取 CSS、JavaScript,图片等资源也各有自己的抓取通道。资源請求過多會抬高單頁抓取成本,尤其当正文和連結都依赖 JS 渲染时,URL 被發現的速度會明顯變慢。本文梳理哪些资源值得省、哪些不能屏蔽,以及怎么從日誌里看出問题。

搜尋抓取

抓取不止頁面本身:CSS、JS 和图片在蜘蛛眼里占多少分量

蜘蛛取走的不只是 HTML

很多站長把抓取理解成“蜘蛛下载頁面源碼”。這個理解只對了一半。搜尋引擎的抓取大致分两條线:一條抓頁面本身,也就是 HTML 文档;另一條是為了把頁面渲染出来、看懂里面的内容,而去取頁面引用的外部资源,最典型的就是 CSS 和 JavaScript。图片、字体、视频封面這類素材,通常走各自专门的通道,服務于图片搜尋或媒体索引,和網頁索引並不完全共用同一套逻辑。

所以,当你在服務器日誌里看到一批 .css、.js 請求,来源标着蜘蛛的 UA,這並不奇怪,也不一定是被人恶意刷了。

资源抓取會不會抢走頁面的抓取量

會,但不是简單的一比一換算。

  • 渲染頁面必需的资源,通常會被優先安排,因為它們决定蜘蛛能否看懂頁面;
  • 和渲染無關的资源,比如埋点脚本、广告脚本、第三方統計,優先級低,很多时候蜘蛛根本不取;
  • 同一份 CSS 或 JS 被大量頁面引用时,缓存會起作用,重复請求會明顯减少。

真正容易出問题的情况是:頁面 HTML 本身不大,但要渲染它得拉十几個外部文件。在蜘蛛的视角里,訪問這一個頁面的成本就被放大了。

哪些做法會抬高抓取成本

首屏内容依赖同步 JS

如果正文和内部連結都靠 JS 拼出来,蜘蛛必须先拿到脚本、再执行脚本,才可能發現新的 URL。這條鏈路越長,URL 被發現的节奏就越慢。對内容型站点来说,這是一筆長期的隐性開销。

大量阻塞渲染的外鏈 CSS

每一個外鏈样式表都是一次額外請求。把關键样式内联、非關键样式异步加载,能减少這類請求的數量。

图片全部原图直出

图片並不直接决定網頁索引,但图片搜尋是獨立的抓取對象。高清大图、没有宽高属性、缺少 alt 描述,既拖慢渲染,也不利于图片被正确理解。

在 robots.txt 里屏蔽 CSS 和 JS

這是很常见的誤操作。屏蔽之後,蜘蛛拿不到样式和脚本,渲染出来的頁面可能是空白的或者错位的,反而影响它對頁面内容與連結的判断。

把 CSS、JS 当成“蜘蛛不该碰的東西”去屏蔽,结果往往比不屏蔽更糟。

把资源成本压下来的几個動作

  1. 先保證 HTML 里就有真内容:正文、導航連結、面包屑尽量由服務端直接輸出。
  2. 合並、压缩静態资源,减少請求數量,通常比單纯压体积更有效。
  3. 非關键脚本延後加载,用 defer 或按需加载,別让首屏被第三方脚本卡住。
  4. 静態资源走 CDN,缩短响應時間,蜘蛛等待的時間也随之變短。
  5. 图片使用合适的尺寸和格式,标注宽高,减少布局抖動。
  6. 回头检查 robots.txt,確認没有屏蔽 /css/、/js/ 這類目錄。

小站不必過度優化

如果站点只有几百個頁面,资源請求带来的压力通常不是瓶颈,把内容质量、内鏈结构和服務器响應做好更實际。当頁面規模到几萬、几十萬級別,或者日誌里资源請求明顯多于頁面請求时,再来梳理资源加载,收益會更清楚。

判断方法很简單:打開服務器日誌,按路径後缀分组,統計一段時間内蜘蛛請求的分布。HTML、CSS、JS、图片各自占多少,一眼就能看出来。哪個占比反常,就先動那一块。