应内联关键CSS并异步加载非关键CSS。将首屏所需样式内联至标签,避免请求阻塞;其余CSS通过rel="preload"异步加载,结合构建工具如Critical自动提取关键样式,并用媒体查询分设备加载,提升渲染速度。

为了让页面更快呈现首屏内容,应在HTML模板中合理引入CSS,避免阻塞渲染。核心思路是:关键CSS内联,非关键CSS异步加载。
提取并内联关键CSS
首屏可见区域所需的样式称为“关键CSS”(Critical CSS)。将这部分CSS直接写入HTML的 标签中,可减少网络请求,加快渲染速度。
例如:这样浏览器无需等待外部文件下载即可开始渲染。
立即学习“前端免费学习笔记(深入)”;
异步加载非关键CSS
其余不影响首屏显示的CSS应异步加载,避免阻塞页面渲染。可通过以下方式实现:
- 使用 media="print" 并在加载后切换为 all,触发异步下载
- 动态创建 link 标签插入 head
- 利用 preload + onload 切换 rel 类型
配合 JavaScript 确保样式最终被应用,同时不阻塞渲染。
结合构建工具自动化处理
手动提取关键CSS容易出错且难以维护。建议使用工具自动分析页面结构并生成关键CSS,如:
- Penthouse:从页面提取关键CSS
- Critical(by Addy Osmani):集成到Webpack或Gulp流程
- Inline-Critical:Node.js库,支持HTML模板处理
这些工具能根据屏幕尺寸模拟首屏内容,精准提取所需样式。
设置媒体查询分条件加载
针对不同设备加载对应样式,也能减少首屏负担。例如:
浏览器只会异步加载符合条件的样式表,进一步优化性能。
基本上就这些。关键是把首屏需要的样式尽快给浏览器,其他往后放。不复杂但容易忽略。











