微信内置浏览器H5清除缓存问题

3,931 阅读2分钟

问题描述

在开发微信H5页面,逻辑使用了localStorage,作为前端开发者,都知道localStorage缓存得手动清除才会时效,但ios端测试微信H5页面,在微信APP端的设置→通用→存储空间→缓存→清理后,重新打开微信H5页面,localStorage缓存依然生效。

问题判断

微信APP端的清除缓存,对微信H5页面localStorage缓存不生效。 可能存在其他类型缓存例如cookie也不生效。

问题排查

通过微信 App 自身,有哪些用户可操作的动作会清空缓存,以及微信内置浏览器的 cookie 和 localStorage 会在何时清除

排查准备

微信软件版本
  • ios 7.0.21 以上
  • Android 7.0.22以上

测试cookie链接

测试localStorage链接

排查操作

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
  • 重新登录:我→设置→退出登录
  • 安卓
  • 找到:我→设置→通用→微信存储空间,点进去即可
  • 重新登录:我→设置→退出登录