跳到主要内容

谈谈FCP和LCP优化

FCP和LCP指标的重要性​

  • 提高用户体验、页面加载的速度
  • 提高SEO搜索引擎,提高爬虫抓取效率

LCP优化问题​

  • DevTools lighthouse 或 PageSpeed Insights 里确认 LCP 元素。
  • 注意LCP最大内容绘制,获取的是 当前视口内最大的内容元素,LCP 只会取一个元素
  • 如果首屏上有大图和小图,那么LCP只会取大图作为LCP最大内容元素

FCP和LCP优化​

  • 首屏图片使用:
    • fetchpriority=high,提高首屏图片优先级加载
    • 前几项 eager,其他lazy (eager立即加载,lazy懒加载)
  • 字体文件大小
    • 使用woff2格式
    • WOFF2:WOFF 的升级版,压缩率更高,文件更小,加载更快
    • 字体压缩
    • 将字体文件不使用的字体,可以删除
    • 国际化多语言字体文件
      • 针对不同语言,按需加载不同字体文件
      • 避免所有语言放在同一个字体文件中
    • 字体文件预加载
  • 首屏图片请求资源之后,进行预加载
    • preload 会让浏览器提前发起该图片请求(在解析到真正的 <img> 之前)
    • 等到DOM 渲染到 <img src="同一个URL"> 时,浏览器会利用已下载的资源
  • 针对关键资源预加载,如字体文件、首屏图片
  • 第三方脚本异步加载、按需加载
    • 如facebook、google的登录sdk脚本、gtag脚本 (google统计脚本)
  • 非关键模块延迟挂载
  • 拆分 chunk 包,降低首屏 JS 体积
    • 针对大的包,进行拆分
    • 按 vendor 做手动分包
    • 避免重大的几个包放在同一个chunk中
  • 服务端渲染,减少首屏水合(hydrate)的压力
  • 图标尺寸优化,如CDN图片