小程序缓存怎么清理:清了会丢什么、什么时候根本不用清(小程序缓存怎么清) szthrk.cn

小程序改完了,用户看到的还是旧样子;或者突然卡住、白屏,第一反应都是“清一下缓存”。

但缓存不是万能的。有些问题清了就好,有些问题清了也没用,还有一些问题清了反而更麻烦。

这一篇说清楚:小程序到底有几层缓存,怎么清,清完会丢什么,以及什么情况下根本不该清。

一、小程序有三层缓存,别只想到一层

第一层,微信客户端缓存。 小程序把页面、图片、代码包存在手机本地,下次打开直接读本地,所以快。这层缓存归微信管,用户能清。

第二层,小程序自己的本地存储。 开发者用 `wx.setStorageSync` 存的数据,比如登录凭证、购物车、搜索历史。这层归小程序自己管,用户清不掉,只能等开发者写清理逻辑。

第三层,服务器和 CDN 的缓存。 图片、接口返回的数据,可能被 CDN 缓存了几天。这层用户完全碰不到,只能开发者去刷新。

三层里,用户能操作的只有第一层。 所以当用户说“我清了还是不行”,多半是问题在第二层或者第三层。

二、用户端怎么清,从轻到重三步

第一步,彻底退出再进。 点右上角的胶囊按钮,选“关闭”,然后从微信的“发现 → 小程序”里重新进入。这一步不清数据,只是重新加载。

第二步,长按删除再进。 在微信“发现 → 小程序”的列表里,长按这个小程序,选删除,然后重新搜索进入。这一步会清掉第一层缓存,包括本地存储的部分内容。

第三步,清微信的存储空间。 “我 → 设置 → 通用 → 存储空间 → 缓存 → 清理”。这一步清的是整个微信的缓存,不只是一个小程序,范围最大,也最彻底。

一般先试第一步,不行再试第二步。第三步不用轻易动,因为它会连带影响微信里其他小程序和聊天记录的加载速度。

小程序备案

三、清完会丢什么

这是最该说清楚的一件事,因为很多人清完发现要重新登录,以为出问题了。

会丢的: 登录状态。大部分小程序把登录凭证存在本地,清掉之后要重新授权一次。

不会丢的: 账号信息、订单记录、余额、积分。这些存在服务器上,跟手机缓存无关。如果清完缓存订单没了,那不是缓存的问题,是账号登错了,或者数据本来就没存到服务器。

所以清缓存之前,先让用户确认一下有没有没提交的内容。有的话先提交,再清。

四、清了还是旧样子,问题就不在缓存

这是最常见的误判。四种情况,清一百次也没用:

情况一,新版本根本没发布。 开发者提交了代码,但后台还是“审核中”或者“未发布”。用户那边当然看不到变化。去后台看版本状态,别看本地开发者工具。

情况二,CDN 没刷新。 图片、样式文件改了,但 CDN 上还是旧的。这时候要开发者在后台手动刷新缓存,或者换个文件名。

情况三,图片地址没变。 图片内容换了,但地址还是 `banner.jpg`。CDN 认地址不认内容,地址不变就不更新。换文件名是唯一百分百有效的办法。

情况四,用户看的不是同一个小程序。 有些业务有多个版本的小程序,用户打开的是另一个。这种情况少,但确实有。

备案小程序

五、开发者这边,怎么让缓存问题少发生

第一,静态资源加版本号。 把 `style.css` 改成 `style.css?v=20261027`,每次发版改一次,用户端一定拿到新的。

第二,图片文件名带内容标识。 不要用 `banner1.jpg`、`banner2.jpg` 这种,用 `banner-1027-activity.jpg`。内容变了名字就变,缓存自然失效。

第三,本地存储别存大东西。 小程序单个 key 的存储上限是 1MB,总共 10MB。存满了会写不进去,而且不报错,只是静默失败。大对象一律放服务器,本地只存一个 ID。

六、什么时候不该清缓存

有两种情况,清缓存是在浪费时间:

第一种,网络问题。 用户那边 4G 信号弱、Wi-Fi 要网页登录,表现就是一直转圈。这时候清缓存没用,让用户换个网络试一下就知道。

第二种,服务器故障。 接口挂了、数据库连不上,所有用户同时出问题。这时候清缓存不但没用,还会让用户误以为是自己的问题,白白折腾。

写在最后

缓存是性能的朋友,是排查的敌人。

它能解释“为什么改了没生效”,但解释不了“为什么打不开”。分清这两件事,能少走很多弯路。

如果只能记一条:改完东西用户看不到,先查版本有没有发布、图片地址有没有变,这两个占了大半。