Nextjs 性能优化:LCP篇

118 阅读2分钟

没有八股文,没有bull shit,这篇文章会尽量简洁的描述LCP优化的一些要点

确保你使用了HTTP 2

HTTP2/HTTPS 相信已经是大多数网站的标配了,如果你有机会把你的网站在 HTTP2/HTTP1.1 下进行对比,你将发现 HTTP2 在网络并发数上面的巨大优势。

所以,尽快切换到HTTP2,这强过你绞尽脑汁做的所有优化!

减小首次渲染的页面体积

页面体积是影响网络加载的最重要因素(没有service worker的前提下),保证首次加载体积尽可能小,其余的按需加载。

务必确保document体积在 20-30kB 以下

浏览器在下载document文件时,Network thread的利用率是最低的,如果你的document过大,将完全阻塞其后续的下载进度!常见的几种情况有:

  • 內联了太多的svg、base64图片
  • 太多用于SEO的fake meta标签
  • 冗余的多语言文案
  • and so on...

总之根据你的实际情况进行判断。

JS/CSS瘦身

导致JS、CSS资源臃肿的原因,多数是引用了太多三方库,例如antd、echarts。

使用webpack analyzer分析你的模块结构,是否存在多余的模块?

  • 如果只用到antd的某几个组件,检查下是否夹带了其他你用不到的组件JS、CSS
  • 如果只用到echarts的pie,那你只需要按照官网的要求调整你的import语句(按需引入)

不要过于相信webpack treeshaking,并把一切责任甩给它,treeshaking的前提是你引用的模块有es格式导出!

代码分割/Lazyload

如果经过👆上面的优化依然存在JS过大的问题,可以考虑把首屏不需要运行的js分割出来,当实际运行时再利用ES6 import 函数动态引入。

当然也可以使用一些lazyload的三方库。