合并资源:通过合并 CSS 和 JavaScript 文件来减少请求数量。
内联资源:对于小型 CSS 和 JavaScript,将它们直接内联到 HTML 中。
服务器端配置,压缩文本资源,减少传输量。
使用 HTTP 缓存标头,例如 Cache-Control,设置适当的缓存策略。
仅在即将进入视口时加载资源,适合图片、视频等
<img src="placeholder.jpg" data-src="real-image.jpg" alt="深入理解前端性能优化:从网络到渲染" > <h4> Preloading and prefetching </h4> <p>Use <link rel="preload"> to load critical resources in advance.<br> Use <link rel="prefetch"> to prefetch non-critical resources.</p> <h3> 3. Rendering optimization </h3> <h4> Critical CSS </h4> <p>Inline the CSS required for the first screen rendering in the HTML head to avoid blocking rendering.</p> <h4> Reduce CSS and JavaScript blocking </h4>
<script async src="script.js"></script>
if ('serviceWorker' in navigator) { window.addEventListener('load', () => { navigator.serviceWorker .register('/sw.js') .then(registration => console.log('SW registered:', registration)) .catch(error => console.error('SW registration failed:', error)); }); }
使用动态导入(import()表达式)按需加载代码块,减少初始加载时间。
button.onclick = async () => { const module = await import('./lazyModule.js'); module.default(); };
在 SPA 应用中,使用框架提供的路由级代码拆分功能,例如 Vue Router 的延迟加载。
// Vue Router example const Foo = () => import('./Foo.vue'); const routes = [ { path: '/foo', component: Foo }, ];
使用 element 或 srcset 属性可根据设备像素比或视口大小提供不同分辨率的图像。
<picture> <source srcset="img/low-res.jpg" media="(max-width: 600px)"> <source srcset="img/high-res.jpg" media="(min-width: 600px)"> <img src="img/fallback.jpg" alt="深入理解前端性能优化:从网络到渲染"> </source></source></picture>
将耗时的计算任务移至 Web Workers,以避免阻塞主线程并保持 UI 响应能力。
// main.js const worker = new Worker('worker.js'); worker.postMessage([1024, 512]); // worker.js self.onmessage = function(e) { const result = e.data[0] * e.data[1]; self.postMessage(result); };
定期清理未使用的计时器、事件监听器和大型数据结构,以防止内存泄漏。
<img src="placeholder.jpg" data-src="real-image.jpg" alt="深入理解前端性能优化:从网络到渲染" > <h4> Preloading and prefetching </h4> <p>Use <link rel="preload"> to load critical resources in advance.<br> Use <link rel="prefetch"> to prefetch non-critical resources.</p> <h3> 3. Rendering optimization </h3> <h4> Critical CSS </h4> <p>Inline the CSS required for the first screen rendering in the HTML head to avoid blocking rendering.</p> <h4> Reduce CSS and JavaScript blocking </h4>
<script async src="script.js"></script>
重点关注LCP(最大内容绘制)、FID(首次输入延迟)和CLS(累积布局偏移)等Web Vitals指标,这些是衡量用户体验的关键指标。
if ('serviceWorker' in navigator) { window.addEventListener('load', () => { navigator.serviceWorker .register('/sw.js') .then(registration => console.log('SW registered:', registration)) .catch(error => console.error('SW registration failed:', error)); }); }
以上是深入理解前端性能优化:从网络到渲染的详细内容。更多信息请关注PHP中文网其他相关文章!