用户打开小程序,从点开到看见内容之间的这段时间,是流失最集中的时候。白屏超过三秒,不少人就退出了。这段体验的优化,投入产出比通常比加功能高。
先弄清时间花在哪,再决定优化什么。
一、时间花在哪几处
第一处是代码包的下载和启动。包越大,启动越慢。这一块主要靠控制包体积,去掉用不到的资源,图片压缩,不必要的库不要引。
第二处是首屏接口的返回时间。小程序启动后要请求数据才能渲染内容。如果这个接口慢,用户就要等。接口慢的原因常见的是查的数据太多、关联了太多表、或者同时请求了好几个接口都在等。
第三处是渲染。数据回来了,界面要画出来。列表一次渲染几百条,或者页面结构太复杂,渲染也要花时间。
二、骨架屏怎么做才有效
骨架屏就是在内容还没到的时候,先显示一个灰色的页面轮廓,让用户知道内容正在来。相比白屏加一个转圈,骨架屏的感知等待时间更短。
关键是轮廓要和真实内容对得上。列表页就画几行灰色的条,每行左边一个小方块右边两条长短不一的横线,跟真实的列表结构接近。如果骨架图画的是一个跟实际完全不同的布局,内容出来的时候会有一次明显的跳变,反而不好。
骨架屏不要做成动画转场。淡入淡出效果看着精致,但增加了等待感。简单直接的替换就好。
三、立刻能见效的几项优化
把首屏接口合并。原本要请求三个接口才能拼出首页,合并成一个,请求次数少了,等待时间也跟着少。这类合并往往能省掉几百毫秒。
先返回必要字段。首页只显示标题和缩略图,那一开始就只查这两项,详细内容点进详情页再查。列表接口返回几十个字段,实际只用得上三四个,是常见的浪费。
分页不要设太大。首页列表一次拉二十条足够,拉一百条既慢又占内存。用户往下滑动再加载。
图片要用合适尺寸。列表里的缩略图用原图,一张几兆,加载自然慢。按显示尺寸做小图,能省很多流量和时间。
四、怎么判断优化有没有用
看数据而不是凭感觉。小程序后台能看到启动耗时和页面切换耗时的统计,优化前后对比一下最直接。如果后台数据不够细,可以在代码里埋点,记录从打开到首屏渲染完成的时间。
测试环境要模拟弱网。办公室里网速快,什么都快。切到四线或者用手机的移动网络测,才是真实用户的体验。很多问题只在弱网下暴露。
不同机型也要测。老旧机型上的表现比新机型差很多,用户群里用旧手机的占比往往不低。优化能不能让老机型也顺畅,比在新机型上快多少更有意义。
