如何提高前端应用的性能
1. 代码优化
1.1 减少JavaScript体积
import { functionA } from 'module';
const module = await import('./module.js');
1.2 优化CSS
.container > .item { ... }
:root {
--primary-color: #4285f4;
}
2. 资源加载优化
2.1 图片优化
<picture>
<source srcset="image.webp" type="image/webp">
<img src="image.jpg" alt="...">
</picture>
2.2 资源预加载
<link rel="preload" href="main.js" as="script">
3. 渲染优化
3.1 减少重排重绘
const fragment = document.createDocumentFragment();
items.forEach(item => {
fragment.appendChild(createItemElement(item));
});
container.appendChild(fragment);
3.2 使用虚拟滚动
import { FixedSizeList } from 'react-window';
4. 缓存策略
4.1 Service Worker缓存
if ('serviceWorker' in navigator) {
navigator.serviceWorker.register('/sw.js');
}
4.2 HTTP缓存头
# Nginx配置
location /static {
expires 1y;
add_header Cache-Control "public";
}
5. 性能监控
5.1 使用Web Vitals
import { getCLS, getFID, getLCP } from 'web-vitals';
5.2 Lighthouse审计
lighthouse https://example.com --view
6. 现代API应用
6.1 Intersection Observer
const observer = new IntersectionObserver(callback, options);
observer.observe(element);
6.2 Web Workers
const worker = new Worker('worker.js');
worker.postMessage(data);
7. 构建优化
7.1 使用现代打包工具
export default defineConfig({
build: {
minify: 'terser'
}
});
7.2 代码拆分
const LazyComponent = React.lazy(() => import('./Component'));
8. 关键优化指标
- 首次内容绘制(FCP) < 1.8s
- 最大内容绘制(LCP) < 2.5s
- 累积布局偏移(CLS) < 0.1
- 首次输入延迟(FID) < 100ms
9. 实战技巧
- 关键CSS内联
- 非关键JS延迟加载
- 使用CDN加速静态资源
- 启用HTTP/2或HTTP/3
- 优化字体加载策略
10. 持续优化流程
- 建立性能基准
- 设置监控告警
- 定期性能审计
- A/B测试优化方案
- 渐进式优化迭代