网站慢这件事,最大的问题是没人会告诉你。
用户不会发邮件说“你们首页打开要八秒”,他直接关掉去下一家。你在后台看数据,只看到跳出率有点高,也说不清为什么。等你哪天自己在外面用手机流量打开一次,才发现真的慢。
所以性能这事,别等反馈,得自己定期查。
先摸清现状,别凭感觉。打开首页,看首屏出现内容用了多久,这是用户实际感受到的速度,比“完全加载”那个数字重要得多。手上没有专业工具也不打紧,浏览器自带的开发者工具里就有网络面板,能看到每个文件多大、按顺序花了多久。手机上也可以装个测速的页面工具,输入网址就出一份报告。
通常最占地方的是图片。见过太多公司,产品图是单反拍的,一张七八兆,首页一口气放十张,光图就七八十兆。手机用户开着 4G 流量打开,等半分钟都正常。这种问题解决起来不难:图片上传前先压一遍,长边控制在 1600 像素以内,文件大小基本能压到原来的十分之一,肉眼几乎看不出差别。再给下方的图片加上懒加载,滚到哪加载到哪,首屏就轻了。
这一项是所有优化里性价比最高的,改动小、收益大,可以先做。
第二块是缓存和 CDN。很多网站的文件每次访问都要回源站取一遍,服务器压力大,用户还慢。开启浏览器缓存,让图片、样式、脚本这些不常变的内容在用户本机存一份,第二次访问几乎是瞬间打开。再挂一个 CDN,把这些静态文件分发到各地节点,全国各地访问速度拉平,不至于北方的用户等南方的服务器慢慢回数据。
这两样配置都不复杂,但收益是整站级别的,尤其对图片多的站。
第三块是请求数量。有的页面加载几十个脚本文件和样式文件,浏览器要一个个去请求,排队也要花时间。能合并的合并,能压缩的压缩,用不上的第三方插件、统计代码、客服脚本,统统清一遍。
这里有个常见误区:老板或者市场部隔一段时间就让加一个跟踪代码、加一个客服插件、加一个营销工具。加的时候没人拦,一年下来页面上塞了十几个外部脚本,每个都拖速度。建议给这类外部代码立个规矩:新加一个,就要有人说明它带来什么价值,隔半年清一次,不用的删掉。
第四块才轮到后端。数据库查询没加索引、循环里反复查库、页面数据一次全查出来用不完——这些问题在大数据量下才暴露,前期看不出来。网站开发阶段就该把几个主要查询的索引加好,别等文章攒到几千条、产品攒到几百个的时候才想起来。
要做到什么程度算够?别追测速工具上的满分,那个分数有时候要靠牺牲功能换。定一个务实的标准:手机 4G 网络下,首屏三秒内出现内容,用户能开始操作。达到这个标准,体验就不会赶人。
最省事的做法就一条:把性能当验收项写进合同。上线前测一次,把首屏时间、图片体积这些指标写进验收清单,不达标就不算交付。上线后再补,成本高得多——那时候代码已经成型,改起来牵一发动全身,还容易改出新的问题。
网站开发里有太多“上线再说”的事,性能是其中最不该拖的一件。因为它直接影响的是每一个来访的客户,而不是某一个功能。