问题描述
在开发微信H5页面,逻辑使用了localStorage,作为前端开发者,都知道localStorage缓存得手动清除才会时效,但ios端测试微信H5页面,在微信APP端的设置→通用→存储空间→缓存→清理后,重新打开微信H5页面,localStorage缓存依然生效。
问题判断
微信APP端的清除缓存,对微信H5页面localStorage缓存不生效。 可能存在其他类型缓存例如cookie也不生效。
问题排查
通过微信 App 自身,有哪些用户可操作的动作会清空缓存,以及微信内置浏览器的 cookie 和 localStorage 会在何时清除
排查准备
微信软件版本
- ios 7.0.21 以上
- Android 7.0.22以上
排查操作
1. 刷新
右上角菜单-刷新
- ios 如果连续操作两次点开右上角菜单刷新,会更新浏览器资源文件
- 安卓如何刷新都不会更新浏览器资源文件
2. 微信清理缓存
ios:我→设置→通用→存储空间→缓存→清理
安卓:我→设置→通用→微信存储空间
安卓:我→设置→通用→微信存储空间→缓存→清理
- iOS清理缓存不会清理webview的浏览器缓存
- iOS清理缓存会清空cookie
- iOS清理缓存不会清空localStorage
- 安卓点击“微信存储空间”之后,就会清空cookie
- 安卓点击“微信存储空间”之后,就会清空localStorage
- 安卓点击“微信存储空间”之后,会清除缓存
3. 删除聊天记录
iOS:设置-清空聊天记录
安卓:设置-聊天-清空聊天记录
- 不管是安卓还是 iOS,清空聊天记录并不能清除webview的浏览器缓存、cookie
4. 注销登录
iOS:我→设置→退出登录
安卓:我→设置→退出
- iOS重新登录会清空cookie
- iOS重新登录会清空localStorage
- 安卓重新登录会清空cookie
- 安卓重新登录会清空localStorage
- 不管是安卓还是 iOS,注销之后重登陆,都会清除webview的浏览器缓存、cookie
5. 删除重装(没有试过)
- 未尝试
排查原因
由上述第二点看出,项目的微信H5页面在iOS清理缓存不会清空localStorage
排查总结
清除资源缓存
- ios
- 点击右上角菜单刷新,连续操作两次
- 安卓
- 找到:我→设置→通用→微信存储空间,点进去即可
清空cookie
- ios
- 找到:我→设置→通用→存储空间→缓存→清理
- 重新登录:我→设置→退出登录
- 安卓
- 找到:我→设置→通用→微信存储空间,点进去即可
- 重新登录:我→设置→退出登录
清空localStorage
- ios
- 重新登录:我→设置→退出登录
- 安卓
- 找到:我→设置→通用→微信存储空间,点进去即可
- 重新登录:我→设置→退出登录