一、頁面上有一個(gè)按鈕,點(diǎn)擊的是會(huì)執(zhí)行window.location.reload(),正常情況reload()后會(huì)向后臺(tái)發(fā)出請(qǐng)求,但在安卓的微信瀏覽器中reload后,通過fiddler抓包發(fā)現(xiàn),并沒有發(fā)送請(qǐng)求。應(yīng)該是微信緩存的問題。
二、解決方法:最常用的方法,更新時(shí)間戳:window.location.href+隨機(jī)數(shù)。寫一個(gè)小函數(shù),添加或更新鏈接后的時(shí)間戳。這里,第二個(gè)參數(shù)表示時(shí)間戳的key,不傳參時(shí),默認(rèn)變量名為“t”。
function updateUrl(url,key) { var key = (key || 't') + '='; //默認(rèn)是“t” var reg = new RegExp(key + '//d+');//正則:t=1472286066028 var timestamp = +new Date(); if(url.indexOf(key)>-1)//有時(shí)間戳,直接更新 { return url.replace(reg, key + timestamp); } else //沒有時(shí)間戳,加上時(shí)間戳 { if(url.indexOf('/?')>-1) { var urlArr = url.split('/?'); if(urlArr[1]) { return urlArr[0] + '?' + key + timestamp + '&' + urlArr[1]; } else { return urlArr[0] + '?' + key + timestamp; } } else { if(url.indexOf('#')>-1) { return url.split('#')[0]+'?'+key+timestamp+location.hash; } else { return url + '?' + key + timestamp; } } } }三、調(diào)用window.location.href=updateUrl(window.location.href); //不傳參,默認(rèn)是“t”window.location.href=updateUrl(window.location.href,'v'); //傳入自定義的變量名四、第二種方法(針對(duì)php的情況,就是講location.href指向一個(gè)新的鏈接,在新鏈接中再重定向本頁面)
假設(shè)原頁面鏈接是://xxx.xxx.com/xxx/index?fsid=1001039610100510,則location.href等于如下:
var url=location.href;
location.href='//xxx.xxx.com/xxx/update?curl='+encodeURIComponent(url);
在PHP中,function update()的處理如下
function again(){
$url=$this->input->get('curl');
header("Location:".$url);
}
經(jīng)過fiddler抓包測(cè)試,只有第一次刷新時(shí)有效,再次刷新,安卓微信瀏覽器仍然會(huì)緩存,所以還是更改時(shí)間戳最有效,這也是解決緩存最常用的方法。
新聞熱點(diǎn)
疑難解答
圖片精選