首先说明一下,我们公司是基于vue开发的 运行在手机上的web项目。
以下描述中,界面A和界面B都是同一个界面(链接都是https://www.feiyang.life/#/rewardDetail?drawId=25&inviteUserId=11
,以下用链接C
表示),只是为了后面的描述,更加好区分而已。有bug的界面是界面A,界面A改完bug之后的界面称之为界面B。
问题描述:
链接C在早晨8点之前打开过,然后8点发现一大个bug,改掉之后上传代码到服务器上。
早晨8-10点
,在微信APP内打开链接C的时候,显示的是界面A。
有意思的是,在电脑的浏览器上调成手机模式或者在微信开发者工具上打开链接C,显示的是界面B。
更有意思的是,将链接C改为https://www.feiyang.life/#/rewardDetail?drawId=25&inviteUserId=12
(这个链接上个月之前在微信app内置的浏览器上打开过),运行在微信APP内置的浏览器上的时候,发现显示的是界面B。这两个链接只有一个参数的值是不一样的。但是在早晨10点之后
,该问题就不会再出现了。所以,个人认为很大的可能是微信APP内置的浏览器的缓存策略在搞鬼。
猜测原因:微信的在不同的时间采用不同的缓存策略来显示页面。
- 早晨0-8点,
多次访问链接C,只对第一次访问做缓存处理
(例如,凌晨4点访问了1次);第二次、第三次....访问时,都显示的第一次缓存的界面
。因此凌晨4点后-8点前,你如果对该页面新增了一些log或者多加了一些标签或者修改了页面中的某些内容,那么这些你修改的这些内容都不会
显示出来,而是显示的是凌晨4点
存入缓存的界面。
除非你手动刷新一下或者等缓存时间过了再访问。早晨10点之后
,就不是之前的那种缓存策略了,而是每次打开都是最新的页面,显示的不是缓存界面,此时,你如果对该页面新增了一些log或者多加了一些标签或者修改了页面中的某些内容,那么这些你修改的这些内容都会
显示出来。但是我们需要这么被动吗?不需要的。
解决办法:
- 链接中增加随机数参数,保证每次访问的url都是不一样的,这样微信就不会把之前的缓存界面拿过来显示了。
之前的链接:https://www.feiyang.life/#/rewardDetail?drawId=25&inviteUserId=11
;
现在改为https://www.feiyang.life/#/rewardDetail?drawId=25&random=0.23109808943312116&inviteUserId=11
--------如有问题,还请大家批评指正
网友评论