直接答案:25 个首页共声明 122 个样式表(中位 5、最多 14)和 195 个外链脚本。其中 22 个站点在 head 里放了同步脚本,合计 78 个(中位 2、最多 8,E28);只有 3 个站点使用 async/defer(共 10 个,且全部在 body)。头部内联脚本 36 个;preload 只有 E25 的 5 个,preconnect 为 0。

本文只解析 HTML 标签与属性,不执行脚本、不测真实加载时间或首屏渲染。

25
首页
122
样式表
78
head 同步脚本
22
有同步脚本的站点
3
用 async/defer
0
preconnect

方法:解析标签与属性,不执行脚本

2026-11-08 12:43–12:45,对第 4 期 25 个首页各发一次 GET(超时 15 秒,失败重试 1 次),解析 link rel="stylesheet" 与 script 标签:统计样式表数量、脚本在 head/body 的位置,以及 async、defer、type="module"(含无值属性)。不加载 CSS/JS 文件,也不执行页面脚本。

项判定边界
head 同步脚本head 内、无 async/defer/module 的外链脚本不判断实际执行耗时
async/defer标签含对应布尔属性不区分加载顺序与依赖
样式表rel 含 stylesheet不读 media 之外的条件加载
preload/preconnectlink rel 计数不判断是否命中关键资源

结果:122 个样式表,中位 5 个

指标数值说明
样式表总数12225 站合计
每站中位 / 最多5 / 14最多为 E16
没有外链样式表3 站E18、E20、E25
print 专用样式表0没有站点用 media="print" 降低阻塞

head 同步脚本:22 站共 78 个

指标数值说明
head 同步脚本7822 个站点至少 1 个
每站中位 / 最多2 / 8最多为 E28
head 内联脚本3617 个站点
外链脚本总数195含 body 与异步

head 同步脚本会推迟后续 HTML 解析:78 个脚本意味着这些页面在首屏前要按顺序下载并执行它们。E28 有 8 个、E17/E19/E27 各 7 个,属于最集中的一组;把非关键脚本移到 body 末尾或加 defer 是最直接的改法。

async/defer:只有 3 站、10 个,全在 body

项站点数 / 数量说明
使用 async/defer/module3 站 / 10 个E02 1、E17 4、E25 5
head 内 async/defer0异步脚本都在 body
body 内 async/defer10不阻塞解析,但不保证顺序

异步属性主要用于统计类脚本;22 个有 head 同步脚本的站点里,没有一个在 head 使用 async/defer。也就是说,当前的优化重点是“把脚本放哪”,而不是“怎么加载”。

preload 与 preconnect:1 站 preload,0 站 preconnect

资源提示站点数说明
preload1E25,5 个标签
preconnect0—

preload/preconnect 不是越多越好:只有对首屏关键资源提前请求才有意义。0 站 preconnect 说明第三方域名握手没有被显式优化,但也要结合第三方数量判断,不能单独当作缺陷。

对验收的启示

  1. 把 head 同步脚本列入验收。 22/25 站点存在,合计 78 个;非关键脚本移到 body 末尾或加 defer。
  2. 异步属性要真的用起来。 只有 3 站使用 async/defer,且都在 body;head 内 0 个。
  3. 控制样式表数量。 中位 5 个、最多 14 个;合并与关键 CSS 内联仍有空间。
  4. 内联脚本也要审计。 17 站共有 36 个 head 内联脚本,需确认是否必须在首屏前执行。
  5. preload/preconnect 按关键路径用。 仅 1 站 preload、0 站 preconnect;先确认首屏关键资源,再决定是否加。企业官网验收可参考网站建设服务。

局限

  • 只解析 HTML:不执行 JS、不测真实阻塞时间、执行顺序或首屏渲染。
  • 动态插入不计:由脚本动态插入的 script/link 不在 HTML 中,本文不统计。
  • 单次抓取:2026-11-08 12:43–12:45;页面改版或 CDN 差异会改变结果。
  • 数量不等于影响:一个小同步脚本与一个大包的阻塞差异很大;本文只看数量与位置。
  • 25 站 pilot:不外推行业。

数据与复算

匿名数据:equipment-homepage-blocking-resources-2026.csv(25 行 × 14 列:样式表、print 样式表、脚本总数、外链脚本、head 同步、head/body async、内联 head、preload、preconnect、时间)。仓库内为 docs/research/2026-11-homepage-blocking-resources.csv。

解析:scripts/blocking_resource_probe.py;单元测试 scripts/test_content_blocking_resources.py(10 项,无网络)。运行:

python -m unittest scripts.test_content_blocking_resources

配套:首页 CSS/JS 缓存头 pilot、首页静态资源清单 pilot、首页字体交付 pilot、首页 CSP pilot。

数据来源与口径

  1. 样本:第 4 期 25 个首页(同一批 sample_id)。
  2. 抓取:2026-11-08 12:43–12:45 Asia/Shanghai,串行,站间 0.5 秒,超时 15 秒。
  3. 解析:link rel=stylesheet 计数;script 按 head/body 与 async/defer/module 分类(布尔属性按标签原文识别)。
  4. 不加载 CSS/JS,不执行页面脚本。

常见问题

head 同步脚本为什么会阻塞?

浏览器要下载并执行完脚本才继续解析后面的 HTML;把脚本放 body 末尾、或加 defer/async,可以避免阻塞首屏解析。

样式表多就一定慢吗?

不一定。阻塞取决于文件体积、是否关键 CSS 与网络;但 10 个以上的样式表通常意味着合并与关键 CSS 内联还有空间。

defer 和 async 怎么选?

defer 保持执行顺序、在 DOMContentLoaded 前执行;async 下载完就执行、不保证顺序,适合统计等独立脚本。

preconnect 有必要吗?

对首屏关键的第三方域名可以提前握手;本次 0 站使用,不代表必须,取决于第三方依赖数量与关键路径。

25 个站点能代表行业吗?

不能。这是第 4 期同一批装备企业官网的 pilot,只描述这 25 个首页。

数据能复核吗?

可以。公开 CSV 25 行 × 14 列;scripts/blocking_resource_probe.py 有 10 项离线单测。

关于作者

凌壹信息Official(交付团队),负责企业网站、品牌与智能制造项目的需求梳理、方案与验收协作。本文只解析 HTML 标签与属性,不执行脚本、不测真实加载或首屏性能,也不构成对任何站点的最终结论;25 站 pilot,不外推行业。

canonical 缺失是首页的常见缺口

25 站:9 个 canonical、16 个缺失;8 个 og:url。

预约内容验收方案