首先說(shuō)明一下,我們公司是基于vue開發(fā)的 運(yùn)行在手機(jī)上的web項(xiàng)目。
以下描述中,界面A和界面B都是同一個(gè)界面(鏈接都是https://www.feiyang.life/#/rewardDetail?drawId=25&inviteUserId=11,以下用鏈接C表示),只是為了后面的描述,更加好區(qū)分而已。有bug的界面是界面A,界面A改完bug之后的界面稱之為界面B。
問(wèn)題描述:
鏈接C在早晨8點(diǎn)之前打開過(guò),然后8點(diǎn)發(fā)現(xiàn)一大個(gè)bug,改掉之后上傳代碼到服務(wù)器上。
早晨8-10點(diǎn),在微信APP內(nèi)打開鏈接C的時(shí)候,顯示的是界面A。
有意思的是,在電腦的瀏覽器上調(diào)成手機(jī)模式或者在微信開發(fā)者工具上打開鏈接C,顯示的是界面B。
更有意思的是,將鏈接C改為https://www.feiyang.life/#/rewardDetail?drawId=25&inviteUserId=12(這個(gè)鏈接上個(gè)月之前在微信app內(nèi)置的瀏覽器上打開過(guò)),運(yùn)行在微信APP內(nèi)置的瀏覽器上的時(shí)候,發(fā)現(xiàn)顯示的是界面B。這兩個(gè)鏈接只有一個(gè)參數(shù)的值是不一樣的。但是在早晨10點(diǎn)之后,該問(wèn)題就不會(huì)再出現(xiàn)了。所以,個(gè)人認(rèn)為很大的可能是微信APP內(nèi)置的瀏覽器的緩存策略在搞鬼。
猜測(cè)原因:微信的在不同的時(shí)間采用不同的緩存策略來(lái)顯示頁(yè)面。
- 早晨0-8點(diǎn),
多次訪問(wèn)鏈接C,只對(duì)第一次訪問(wèn)做緩存處理(例如,凌晨4點(diǎn)訪問(wèn)了1次);第二次、第三次....訪問(wèn)時(shí),都顯示的第一次緩存的界面。因此凌晨4點(diǎn)后-8點(diǎn)前,你如果對(duì)該頁(yè)面新增了一些log或者多加了一些標(biāo)簽或者修改了頁(yè)面中的某些內(nèi)容,那么這些你修改的這些內(nèi)容都不會(huì)顯示出來(lái),而是顯示的是凌晨4點(diǎn)存入緩存的界面。
除非你手動(dòng)刷新一下或者等緩存時(shí)間過(guò)了再訪問(wèn)。早晨10點(diǎn)之后,就不是之前的那種緩存策略了,而是每次打開都是最新的頁(yè)面,顯示的不是緩存界面,此時(shí),你如果對(duì)該頁(yè)面新增了一些log或者多加了一些標(biāo)簽或者修改了頁(yè)面中的某些內(nèi)容,那么這些你修改的這些內(nèi)容都會(huì)顯示出來(lái)。但是我們需要這么被動(dòng)嗎?不需要的。
解決辦法:
- 鏈接中增加隨機(jī)數(shù)參數(shù),保證每次訪問(wèn)的url都是不一樣的,這樣微信就不會(huì)把之前的緩存界面拿過(guò)來(lái)顯示了。
之前的鏈接:https://www.feiyang.life/#/rewardDetail?drawId=25&inviteUserId=11;
現(xiàn)在改為https://www.feiyang.life/#/rewardDetail?drawId=25&random=0.23109808943312116&inviteUserId=11
--------如有問(wèn)題,還請(qǐng)大家批評(píng)指正