Lighthouse 报 Total Blocking Time 过高怎么办?

司马文亭 阅读 20

我用 Lighthouse 测性能时,TBT(Total Blocking Time)总是超过 200ms,明明页面看起来挺快的,但分数被拉得很低。我试过把一些第三方脚本 defer 了,但没太大改善。

这是我的关键 HTML 结构,是不是哪里写得不对?

<head>
  <script src="analytics.js"></script>
  <script src="ads.js"></script>
</head>
<body>
  <div id="app">Loading...</div>
  <script src="main.js"></script>
</body>
我来解答 赞 3 收藏
二维码
手机扫码查看
1 条解答
司马长春
你这个问题其实挺典型的。Lighthouse 对 TBT 的要求确实严格,但也是为了保证页面交互的流畅性。从你的代码来看,问题主要出在那些同步加载的脚本上。

首先要把所有非必要的 JavaScript 都设置为 defer 或者 async。按照官方文档里说的最佳实践,第三方脚本尤其要处理好,它们通常是最容易造成阻塞的。

把你的 head 里的 script 标签改成这样:

<head>
<script src="analytics.js" defer></script>
<script src="ads.js" defer></script>
</head>


另外 main.js 最好也用 defer。虽然看起来页面加载快,但实际上这些脚本在解析时会阻塞主线程。

还有个容易被忽略的点是,检查下这些脚本是否包含长时间运行的同步任务。比如一些老式的 jQuery 插件,可能会在 DOMContentLoaded 事件中做大量计算。这种地方最好拆分一下,或者考虑用 Web Workers。

最后提醒一句,优化性能这事没尽头,慢慢来别急躁,每次解决一个小问题就好。
点赞
2026-03-26 17:05