搜索抓取

渲染资源也在抓取名单里:图片、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。搜索控制台的抓取统计里也有按用途分类的数据,可以用来交叉验证。

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