没有八股文,没有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的三方库。