如何减少JS加载时间
减少 JavaScript 加载时间的优化策略
1. 代码优化
- 代码压缩:使用工具如UglifyJS、Terser或Webpack的production模式
- Tree Shaking:移除未使用的代码(ES6模块系统)
- 代码分割:将代码拆分为按需加载的块
- 移除console.log:生产环境删除调试代码
2. 加载策略优化
- 异步加载:使用
async
或defer
属性
html
<script async src="script.js"></script>
<script defer src="script.js"></script>
- 延迟加载:非关键JS延后加载
- 预加载:对关键资源使用
<link rel="preload">
html
<link rel="preload" href="critical.js" as="script">
3. 缓存策略
- 强缓存:设置适当的Cache-Control和Expires头
- 内容哈希:文件名添加哈希实现长效缓存
main.abc123.js → 内容变更哈希会变
- Service Workers:实现离线缓存
4. 传输优化
- Gzip/Brotli压缩:服务器启用压缩
- HTTP/2:利用多路复用减少连接开销
- CDN分发:减少网络延迟
5. 第三方脚本优化
- 异步加载第三方脚本
- 延迟非必要第三方脚本
- 考虑自托管关键第三方资源
6. 现代JS交付
- ES模块:使用
<script type="module">
支持现代浏览器
- Nomodule回退:为旧浏览器提供传统包
html
<script type="module" src="modern.js"></script>
<script nomodule src="legacy.js"></script>
7. 性能监控
- 使用Lighthouse、WebPageTest等工具持续监控
- 实施RUM(真实用户监控)捕获实际性能数据
通过综合应用这些策略,可以显著减少JavaScript加载时间,提升页面加载性能。