微信进入公众号时,页面的功能不正常,但是在微信右上角点菜单刷新页面,功能又正常了。然后再次进入微信公众号,还是同样的问题。通过分析,锁定为微信缓存问题。对于这个问题,网上一些方案并不可行,所以我就自己研究了一个方法,终于彻底解决了这个问题。那叫一个爽呀。
下面是解决问题的过程:
1、 发现bug
在微信端功能调试的时候,发现ios端扫码出现规律性的扫码失败,准确的说是根本无法调用扫码。刷新后可以正常扫码。安卓端没有这个情况,初步判断是缓存的问题。2、验证bug
缓存bug很好验证,开启jsdk的调试模式后。每次注册接口的时候都会弹出消息。在ios端表现是,第一次进入没有任何消息。刷新后就会有消息弹出。可以确认是缓存导致的问题了,能导致这现象的我也就想到缓存
3、解决bug
知道是缓存问题了就看怎么解决了,首先的看看微信缓存了啥。我们写的应用是单页应用,所有页面的元素师通过js来渲染的,微信api注册接口也是js来完成的。首先想到js被缓存了。但是我们的js在每次发布的时候都会带上hash值。不太可能缓存很久之前的版本。不能扫码这个是开始的微信开发的时候才出现的。用微信开发工具调试后发现,js请求正常,但是没有index.html。这个文件的内容是
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no" />
<title></title>
<link rel="stylesheet" href="src/css/icon/iconfont.css"/>
</head>
<body>
<div id="app">
</div>
<script src="dist/build.js"></script>
</body>
</html>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no" />
<title></title>
<link rel="stylesheet" href="src/css/icon/iconfont.css"/>
</head>
<body>
</div>
<script>
window.local.href='./index.html?fackWeixin='+parseInt(new Date())
</script>
</body>
</html>
上传测试。每次扫码都能成功。至此。我们这个bug算是被解决了
顺便说一句,微信支付只有ios端才会有报错消息。