小程序用了缓存,打开速度快,流量也省。但缓存用不好,会出现用户看到旧价格、旧库存、旧页面,甚至更新了版本用户那边还是老样子。
把缓存当成一个需要主动管理的东西,而不是设置一次就不用管,能避免大部分问题。
一、小程序里有哪些缓存
一类是数据缓存,用来存接口返回的内容,比如商品列表、配置信息、用户资料。这类缓存由开发方自己控制,存什么、存多久都能设。
另一类是资源缓存,小程序把用到的图片、样式、脚本存在本地,下次打开直接用。这类由微信自己管理,开发方控制力度有限。
还有一类是登录态缓存,保存用户的登录凭证,避免每次都重新授权。这类缓存的有效期跟服务端的设置有关,过期之后需要重新登录。
二、不同数据该给多长的缓存
判断标准是这条数据变动的频率,以及看到旧数据会造成什么后果。
价格、库存、余额这类数据,看到旧值可能造成交易纠纷,不该缓存,或者只缓存很短时间,并且在下单前强制刷新一次。用户资料这类变动不频繁的,可以缓存较长时间,几个小时的缓存都能接受。
配置类和字典类数据,比如城市列表、分类目录、活动规则,可以缓存久一些,一天也没问题。地区列表一周都不变的情况也有。
有一类要注意,凡是涉及状态判断的,比如这张券能不能用、这个订单能不能取消,不要靠缓存判断,一定要实时问服务端。缓存里的可用状态可能是几分钟前的,用户按这个操作会失败。
三、什么时候该主动清缓存
几个必须清的时机。用户登录、退出、切换账号时,之前账号的缓存要清掉,否则可能串数据。用户修改了资料,要清掉本地的资料缓存,否则界面还是旧的。
版本更新时也要处理。小程序发新版本后,用户下次打开会自动更新,但本地缓存的数据还在。如果新版本改动了数据结构,旧缓存可能导致报错。做法是在启动时检查缓存的数据版本号,跟当前版本不一致就清掉重新拉取。
还有一类是运营需要。比如价格调整、活动上线,希望用户立刻看到新的。这种可以在接口层面加时间戳或者版本号,让缓存立刻失效。
四、用户看到老版本怎么办
小程序更新机制是先在后台发布,用户下次打开时下载新版本。所以刚发布的一段时间,用户群里会同时存在新旧版本。
如果更新涉及重要变化,比如接口有调整,要做到新旧版本都能用一段时间,不能新版本一上线旧接口就停。这个兼容期一般留一到两周。
用户如果一直没更新,可以让他在小程序里手动操作。通常的路径是在小程序右上角的菜单里重新进入,或者删除后重新搜索进入。这类说明最好放在客服话术里,客服能快速指导用户。
