最近為一個老項目做微信接入相關的工作,遇到一個特別奇葩的事情,客戶端明明用js window.location = 'xxx.html' 訪問了一個頁面,那個頁面會自動去訪問后台的接口,后台接口去調用微信的接口,但是測試的時候,發現有的時候可以成功訪問到 xxx.html,有的時候不能成功訪問到xxx.html,后台調試輸出的結果是,不管你是否成功的訪問到了 xxx.html 頁面,都會進行正常的 xxx.html 頁面之后的操作,也就是訪問后台的接口,但是如果沒有成功訪問到 xxx.html,所以它后面的操作就會失敗,如果成功訪問到了xxx.html,那么后面的操作就能正常進行。調試了兩個多小時,一直搞不明白,前端明明 window.location = 'xxx.html',為什么就沒有訪問到 xxx.html 頁面呢?太奇怪了。后來用手機重復測試的,觀察反應的時候,發現 在訪問 xxx.html頁面時, 微信瀏覽器 的標題 會顯示 xxx.html 頁面的<title> 的標題,但是不到1秒,之后,有跳回到了之前的頁面,瑪德,到這里,才想到是 微信瀏覽器的緩存在作怪!!!以前也遇到過PC瀏覽器的換成問題,ctrl+f5 或者安裝個插件設置一下就永遠搞定了,但是第一次遇到微信瀏覽器的緩存,還是被忽悠了。
找到了原因,解決辦法就簡單了。window.location='xxx.html' 時,在后面加個隨機參數:window.location='xxx.html?_r='+Math.random();
這樣每次訪問的都是不同的連接,所以避免了微信瀏覽器使用緩存的 xxx.html 頁面。
其它的解決辦法:
<meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate" /> <meta http-equiv="Pragma" content="no-cache" /> <meta http-equiv="Expires" content="0" />
感覺不一定靠譜。
微信開發一定要注意他的緩存問題。
