最近开发的微信公众号项目中(项目采用),遇到个非常奇葩的问题,发布站点内容后,通过微信打开网址发现是空白页面(后来验证是微信浏览器缓存了入口文件-index.开发内部测试时该问题没有引起关注,因为开发人员大部分都是android的手机,后来测试发现,某些android机型不是必现此问题,但是苹果(IOS)机型,每次都是必然发生。
百度千百回#
在客户反馈此问题后,如噩梦般的探索解决过程就此开始了。因为在缓存了站点的入口文件(某些android机型不会发生此现象),而是缓存了其他
1.
其实在用
output: {
path: config.build.assetsRoot,
filename: utils.assetsPath('
但我们还是尝试在此处加上时间戳,如:
'js/[id].[chunkhash]'+ new Date().getTime() +'.js'
结果是此方案没有生效,失败次数1。
2. 尝试将Vue-Router 的history模式改为hash模式#
这种思路,还是延续了前一种方案的错误思路,认为是浏览器
后来验证这是完全的错误思路,失败次数2。
3. 路由跳转前拦截处理#
尝试此方案的时候,已经知晓产生该问题的原因,是由于微信浏览器
router.beforeEach((to, from, next){
// 实现某些跳转逻辑
}
因为最终的尝试失败了,这里就不再撰述逻辑,失败次数3。
4. 给微信公众号菜单链接加上特定版本号#
该方案只能是用于临时解决,内部做调测还可以,但如果用于正式生产环境,会非常麻烦,需要每次发布更新后,都去更改微信公众号的菜单链接。如下引用所示,在链接上加版本号:
因为这种方案,几乎不可能用于生产环境,失败次数4.
5. 尝试将站点部署到nginx上#
我们的项目是部署在IIS上的,但百度“微信浏览器
location ~* ^.+\.(jpg|jpeg|gif|png|ico|
我们也尝试了安装nginx, 不过受项目其他因素影响,后来放弃了此方案,失败次数5。
蓦然回首,它在此处#
虽然以上几种解决方案的尝试,都以失败告终,但至少我们知晓了造成该问题的原因是由于微信浏览器
最终的解决方案非常简单的,简单到我们都怀疑人生,哈哈。
在IIS中配置, 如下图所示:
解决该问题的过程是非常痛苦的,顾以此文记录,以示我们踩过的坑。
总结
以上所述是小编给大家介绍的解决微信浏览器