网站打开慢的解决方法:先分清第一次打开慢还是每次都慢
第一次慢,回访却很快
客户说首页打开要四五秒,我让他再开一次,他说这次一下就出来了。
这就是典型的首次访问慢,后面被缓存接住了,很多人就是这么把问题放过去的,直到新用户开始投诉。
首次和复访差在哪
差别不小,忽略它结论就会错,还会得出「用户瞎说」这种判断。
首次要走完整流程:解析、建连、握手、请求、下载,一样都省不掉。
复访解析命中缓存,连接可能复用,静态资源直接读本地,五段里能省掉好几段,数字自然好看。
所以同一个页面,「首访耗时」和「复访耗时」本来就不是一个数,混着说一定会吵架。
首访慢看哪几段
首访的问题,几乎全在第一次的成本上,改起来也最有感觉。
DNS 段长,说明解析链路慢,第一次访问的人最吃亏,回访的人根本感知不到。
TCP 和 TLS 长,说明建连成本高,域名越多越明显,拆域名不一定都是好事。
下载段长,说明资源体积大,首次要全量拉一遍,图片和字体最容易拖后腿。
用宝塔拨测的网站测速跑多地区多运营商节点,五段是分开的,网络侧和资源侧能分得清,不用猜。
复访也慢说明什么
复访还慢,就是真问题,缓存之外还有别的开销。
缓存没生效,可能缓存头配错,或者资源地址每次都在变,带了随机参数等于没缓存。
也可能是服务端每次都要重新渲染,前端缓存救不了,这种情况只能动后端。
还有一种:连接没有复用,每个请求都重新握手,请求一多,时间就全堆在建连上。
优化怎么分
两类问题,两套手段,不要交叉使用,交叉了就分不清效果。
首访问题,优先砍体积、减少域名和请求数,让第一次尽量轻,收益最直接。
复访问题,重点看缓存策略和连接复用,这两项改动小、收益大。
两种都慢,先解决首访,因为它影响新用户和搜索引擎,优先级更高。
复测方法
测法不对,数字就没有意义,还会误导后面所有判断。
测首访要清缓存,或者换一个干净环境,别在开发者工具里将就。
测复访要连续打开两次,第二次才是缓存后的表现,第一次不算。
两个数都记下来,下次别人问「到底多慢」,你能答得清楚,也不用现编。
首访和复访分开测,结论才靠谱。
靠谱了,才敢对外承诺时间。
承诺准,客户才愿意继续合作。
合作久了,经验就攒起来了。
攒起来,判断就越来越快。
快了,就不用每次都从头问。
少问一次,就多一分效率。
效率高了,事情才做得完。