起因
突然有零星的部分微信用户反馈,微信扫码支付白屏经过测试后发现服务正常。
开始排查网关问题,之前用百度云CDN也出现过这种情况,之后切换到了阿里云CDN, 一直都挺稳定的。向阿里云提交了工单,很快得到了反馈,CDN无异常。
查看了阿里云CDN监控:
发现404请求在9月16日凌晨后明显变多。
想起来约两日前,前端进行了一次升级,当时测试一切正常.. 也是凭借着经验怀疑和微信的缓存有关。
让一位访问失败的用户 协助进入了:
http://debugx5.qq.com/
清理了手机微信网页的本地缓存
再次扫码支付后用户访问成功。
分析白屏原因,应该是用户访问的index.html并不是最新的, 而是微信缓存的旧版的index.html 但是本地的JS缓存过期了,加载旧版JS的时候404了。
赶紧吧旧版的JS也加入到了服务器上。
利用CDN监控查看最近几小时的404请求变化。
明显下降,问题暂时解决。
谈谈微信网页的缓存策略。
微信会缓存 HTML CSS JS 图片文件在用户的本地! 而且不会及时的更新。缓存消失时间是不确定的。
可以通过携带参数的形式,携带参数发生变化微信就会放弃本地缓存加载新的文件。
如:
为了彻底解决这个问题,同时保证CDN的效果,需要加入版本号机制,
.html?v=5 .js?v=5 这样的形式加载JS和HTML页面, 通过刷新版本号的方式,
让微信及时缓存最新的文件。
本文由 考拉 创作,采用 知识共享署名4.0
国际许可协议进行许可
本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名
最后编辑时间为: Sep 22,2021