蜘蛛取走的不只是 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、图片各自占多少,一眼就能看出来。哪个占比反常,就先动那一块。