蜘蛛取走的不只是 HTML
很多站長把抓取理解成“蜘蛛下载頁面源碼”。這個理解只對了一半。搜尋引擎的抓取大致分两條线:一條抓頁面本身,也就是 HTML 文档;另一條是為了把頁面渲染出来、看懂里面的内容,而去取頁面引用的外部资源,最典型的就是 CSS 和 JavaScript。图片、字体、视频封面這類素材,通常走各自专门的通道,服務于图片搜尋或媒体索引,和網頁索引並不完全共用同一套逻辑。
所以,当你在服務器日誌里看到一批 .css、.js 請求,来源标着蜘蛛的 UA,這並不奇怪,也不一定是被人恶意刷了。
资源抓取會不會抢走頁面的抓取量
會,但不是简單的一比一換算。
- 渲染頁面必需的资源,通常會被優先安排,因為它們决定蜘蛛能否看懂頁面;
- 和渲染無關的资源,比如埋点脚本、广告脚本、第三方統計,優先級低,很多时候蜘蛛根本不取;
- 同一份 CSS 或 JS 被大量頁面引用时,缓存會起作用,重复請求會明顯减少。
真正容易出問题的情况是:頁面 HTML 本身不大,但要渲染它得拉十几個外部文件。在蜘蛛的视角里,訪問這一個頁面的成本就被放大了。
哪些做法會抬高抓取成本
首屏内容依赖同步 JS
如果正文和内部連結都靠 JS 拼出来,蜘蛛必须先拿到脚本、再执行脚本,才可能發現新的 URL。這條鏈路越長,URL 被發現的节奏就越慢。對内容型站点来说,這是一筆長期的隐性開销。
大量阻塞渲染的外鏈 CSS
每一個外鏈样式表都是一次額外請求。把關键样式内联、非關键样式异步加载,能减少這類請求的數量。
图片全部原图直出
图片並不直接决定網頁索引,但图片搜尋是獨立的抓取對象。高清大图、没有宽高属性、缺少 alt 描述,既拖慢渲染,也不利于图片被正确理解。
在 robots.txt 里屏蔽 CSS 和 JS
這是很常见的誤操作。屏蔽之後,蜘蛛拿不到样式和脚本,渲染出来的頁面可能是空白的或者错位的,反而影响它對頁面内容與連結的判断。
把 CSS、JS 当成“蜘蛛不该碰的東西”去屏蔽,结果往往比不屏蔽更糟。
把资源成本压下来的几個動作
- 先保證 HTML 里就有真内容:正文、導航連結、面包屑尽量由服務端直接輸出。
- 合並、压缩静態资源,减少請求數量,通常比單纯压体积更有效。
- 非關键脚本延後加载,用 defer 或按需加载,別让首屏被第三方脚本卡住。
- 静態资源走 CDN,缩短响應時間,蜘蛛等待的時間也随之變短。
- 图片使用合适的尺寸和格式,标注宽高,减少布局抖動。
- 回头检查 robots.txt,確認没有屏蔽 /css/、/js/ 這類目錄。
小站不必過度優化
如果站点只有几百個頁面,资源請求带来的压力通常不是瓶颈,把内容质量、内鏈结构和服務器响應做好更實际。当頁面規模到几萬、几十萬級別,或者日誌里资源請求明顯多于頁面請求时,再来梳理资源加载,收益會更清楚。
判断方法很简單:打開服務器日誌,按路径後缀分组,統計一段時間内蜘蛛請求的分布。HTML、CSS、JS、图片各自占多少,一眼就能看出来。哪個占比反常,就先動那一块。