为什么我的页面FCP这么高,明明CSS已经内联了?
我用 Lighthouse 测速发现 FCP(首次内容绘制)高达 4 秒多,但首页关键 CSS 已经内联在 HTML 里了,按理说不应该阻塞渲染啊?是不是哪里写错了?
这是我的关键 CSS 部分:
body {
font-family: Arial, sans-serif;
margin: 0;
background-color: #f5f5f5;
}
.hero {
padding: 2rem;
background: white;
box-shadow: 0 2px 8px rgba(0,0,0,0.1);
}
.loading-skeleton {
width: 100%;
height: 20px;
background: #eee;
animation: pulse 1.5s infinite;
}
@keyframes pulse {
0% { opacity: 1; }
50% { opacity: 0.4; }
100% { opacity: 1; }
}
HTML 结构也很简单,没加载外部样式表,字体也是系统默认的,但 Lighthouse 还是报“消除阻塞渲染的资源”……这到底啥原因?
通用的做法是把关键的CSS放在
<head>最上方,确保优先加载。另外看看有没有使用window.onload或者其他延迟执行的脚本,这些都会影响FCP时间。你这有个问题,
@keyframes pulse的动画持续1.5秒太长了,建议缩短到0.5秒左右。虽然动画不影响初始渲染,但会影响整体性能评分。还有就是网络请求这块,用Lighthouse测试时最好清空缓存或者直接用隐身模式跑,避免缓存影响结果。如果服务器响应慢的话,光优化前端也没用,得从源头解决。
最后提醒一下,有时候浏览器自身的渲染压力也会影响测试结果,多换几个环境试试看。这些问题搞清楚了,FCP应该能降到2秒以内。开发真不容易,每次优化都得考虑这么多细节。