我把首页从 3.2 秒压到 380 毫秒,记一笔流水账
不是「前端性能十大技巧」那种爽文。这是一份按时间顺序的真实记录,包括那些我做了、但几乎没用的事。
我的首页原本加载要 3.2 秒。对一个博客来说,这太慢了。于是我开始一个个改。
第一个改动:把那张英雄大图换掉
原来首屏顶着一张 1.2MB 的图。换成一张压缩过的 WebP,体积直接掉到 80KB。
效果:少了约 1.1 秒。 这一项就贡献了最大头的提升。
教训:很多时候瓶颈就是「图太大」,根本不用上什么高级手段。
第二个改动:字体别阻塞渲染
之前用的网络字体是「先显示空白,字体到了再换」,用户会看到文字突然跳一下。改成 font-display: swap 之后,先用系统字体顶着,网络字体到了再无缝替换。
效果:首屏文字出现快了约 600 毫秒,而且没有了那下讨厌的抖动。
第三个改动:把不用的 JS 砍掉
首页引了一个其实只在文章页才用得到的代码高亮库。把它从首页拆出去、按需加载。
效果:又省了约 400 毫秒。
到这里,三个改动加起来,已经从 3.2 秒掉到了 1.1 秒左右。后面我做的十几件事,加起来才再省 700 毫秒。
做了但几乎没用的几件事
说实话,下面这些我花了不少时间,收益却小得可怜:
- 上 Service Worker 做缓存:理论上很美,但我的页面本来就不大,缓存省下的那点时间,被 Service Worker 本身的启动成本吃掉了。
- 给所有图片加懒加载:问题是我首页根本没几张图,懒加载救不了什么。
- 拆了一堆小模块做并行加载:微观优化,用户根本感知不到。
复盘
- 顺序比技巧重要。 先把那张 1.2MB 的图换了,比后面十个微优化都管用。
- 先量再改。 我先用工具看了「时间都花在哪」,才动手,没瞎优化。
- 别迷信「最佳实践」。 Service Worker 对大站是神器,对我这个小博客是负优化。
性能优化不是收集技巧,是找到那几个最肥的瓶颈,先把它掐掉。剩下的,能改就改,改不动也别硬来。
暂无评论,来抢沙发吧~