为什么我的页面FCP这么高,明明CSS已经内联了?

程序猿露宜 阅读 20

我用 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 还是报“消除阻塞渲染的资源”……这到底啥原因?

我来解答 赞 4 收藏
二维码
手机扫码查看
1 条解答
公孙宇泽
FCP高的原因不一定全在CSS,有几个方向可以排查。首先检查下是否有阻塞渲染的JavaScript脚本,即使CSS内联了,脚本加载顺序不对也会拖慢首次绘制。

通用的做法是把关键的CSS放在 <head> 最上方,确保优先加载。另外看看有没有使用 window.onload 或者其他延迟执行的脚本,这些都会影响FCP时间。

你这有个问题,@keyframes pulse 的动画持续1.5秒太长了,建议缩短到0.5秒左右。虽然动画不影响初始渲染,但会影响整体性能评分。

还有就是网络请求这块,用Lighthouse测试时最好清空缓存或者直接用隐身模式跑,避免缓存影响结果。如果服务器响应慢的话,光优化前端也没用,得从源头解决。

最后提醒一下,有时候浏览器自身的渲染压力也会影响测试结果,多换几个环境试试看。这些问题搞清楚了,FCP应该能降到2秒以内。开发真不容易,每次优化都得考虑这么多细节。
点赞
2026-03-26 23:01