这个月我在地铁上打开自己的站,白屏停了好一会儿。办公室里从没发现这个问题:电脑够快,网络也够快,开发工具里的数字看起来甚至挺漂亮。
换到一台普通手机和忽快忽慢的网络,页面立刻不装了。首屏在等一段并不重要的脚本,题图下载的是原始尺寸,字体还带了好几个几乎没用到的字重。
先让读者看到东西
我把首屏样式提前,非关键脚本延后执行,又按页面拆开原本的一大包代码。文章页只拿自己需要的部分,不再背着整个站点的行李出门。
图片按实际显示宽度生成不同尺寸,并明确写好宽高。以前图片加载完成时,正文会突然往下跳,像有人在读者眼前抽走凳子;固定尺寸以后,页面总算安静了。
首屏以外的图片继续偷懒,等快滚到附近时再加载。字体也删掉几个没用的字重。设计上的差别很小,首次打开却明显轻快。
缓存别把旧版本留太久
静态资源带上内容指纹后,可以放心长期缓存。文件内容变化,名字也跟着变化,浏览器自然会取新版本。页面文档则保持较短缓存或重新验证,不再靠一句“请清理浏览器缓存”解决发布问题。
现在我偶尔会关掉无线网络,用手机重新打开一次站点。性能报告当然要看,但那几秒真实的等待更诚实。所谓网页速度,最后不是一个分数,而是读者点开链接后,会不会在白屏前失去耐心。