Lighthouse 报 Total Blocking Time 过高怎么办?
我用 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>
首先要把所有非必要的 JavaScript 都设置为
defer或者async。按照官方文档里说的最佳实践,第三方脚本尤其要处理好,它们通常是最容易造成阻塞的。把你的 head 里的 script 标签改成这样:
另外 main.js 最好也用
defer。虽然看起来页面加载快,但实际上这些脚本在解析时会阻塞主线程。还有个容易被忽略的点是,检查下这些脚本是否包含长时间运行的同步任务。比如一些老式的 jQuery 插件,可能会在 DOMContentLoaded 事件中做大量计算。这种地方最好拆分一下,或者考虑用 Web Workers。
最后提醒一句,优化性能这事没尽头,慢慢来别急躁,每次解决一个小问题就好。