async和defer到底该怎么用才能优化首屏加载?

皇甫彬丽 阅读 28

最近在优化页面加载速度,把两个JS文件分别用了async和defer,但页面还是感觉卡顿。比如这个代码:


<script src="main.js" defer></script>
<script src="analytics.js" async></script>

发现defer的main.js执行完了才渲染页面,async的analytics.js倒是没阻塞,但总感觉顺序有问题。如果两个脚本都没依赖关系,该怎么选才能让首屏更快?

我来解答 赞 2 收藏
二维码
手机扫码查看
1 条解答
程序员红彦
你这种情况,两个脚本都没依赖关系的话,都用 async 就行了。没必要用 defer,因为 defer 会等到 DOM 解析完才执行,反而拖慢首屏渲染。像这样改:

<script src="main.js" async></script>
<script src="analytics.js" async></script>

我之前也遇到过类似的问题,async 的脚本加载是并行的,谁先加载完谁先执行,完全不阻塞渲染,特别适合这种独立的统计或功能脚本。如果你非得保证 main.js 在某些场景下优先执行,那就把它放前面就行,但依然用 async。别想太复杂,浏览器优化得很好。
点赞 3
2026-02-14 15:01