php 微信怎么清除缓存,前端清除缓存方法(微信缓存引起的bug)
bug1:在新版微信中,部門安卓機(jī)子(華為)出現(xiàn)window.location.href/window.location.reload....等方法來(lái)刷新本頁(yè)面鏈接,發(fā)現(xiàn)頁(yè)面沒(méi)有被刷新,經(jīng)過(guò)排查,發(fā)現(xiàn)是因?yàn)榫彺嬖颉?/p>
解決方案:這時(shí)候給鏈接加一個(gè)時(shí)間戳來(lái)解決頁(yè)面緩存!!!
時(shí)間撮:
var myDate = new Date(+new Date()+8*3600*1000).toISOString().replace(/T/g,' ').replace(/\.[\d]{3}Z/,'');
解決緩存方案二:利用pagehide/pageshow 事件
會(huì)話(Session)中的某一個(gè)頁(yè)面顯示/隱藏時(shí),會(huì)觸發(fā)?pagehide?和?pageshow?事件。 這兩個(gè)事件都有一個(gè)?persisted?屬性用來(lái)指示當(dāng)前頁(yè)面是否被 BF Cache 緩存。 因此可以通過(guò)?persisted?屬性來(lái)達(dá)到禁用 BF Cache 的效果:
window.onpageshow = function(event) {if (event.persisted) {
window.location.reload()
}
};
注意?pageshow?不僅在顯示被緩存的頁(yè)面時(shí)觸發(fā),在第一次加載頁(yè)面時(shí)也會(huì)觸發(fā)。 因此需要檢測(cè)事件的?persisted?屬性,頁(yè)面第一次加載時(shí)它的值是?false。
另外?pageshow?的時(shí)機(jī)總是在?load?事件之后。 這一點(diǎn)很容易檢測(cè),比如下面的代碼中?pageshow?日志總在?load?之前打印:
window.addEventListener('pageshow', function () {
console.log('on pageshow')
})
window.addEventListener('load', function () {
console.log('load')
})
XHR 緩存
解決緩存方案三:時(shí)間撮或者隨機(jī)變量
詳細(xì)參考https://harttle.land/2017/03/12/backward-forward-cache.html
前端清除緩存方法
meta方法 有時(shí)候谷歌等瀏覽器不支持
//不緩存
清理form表單的臨時(shí)緩存
其實(shí)form表單的緩存對(duì)于我們書寫還是有幫助的,一般情況不建議清理,但是有時(shí)候?yàn)榱税踩珕?wèn)題等,需要清理一下!
jquery ajax清除瀏覽器緩存
方式一:用ajax請(qǐng)求服務(wù)器最新文件,并加上請(qǐng)求頭If-Modified-Since和Cache-Control,如下:
$.ajax({
url:'www.haorooms.com',
dataType:'json',
data:{},
beforeSend :function(xmlHttp){
xmlHttp.setRequestHeader("If-Modified-Since","0");
xmlHttp.setRequestHeader("Cache-Control","no-cache");
},
success:function(response){//操作
}async:false});
方法二,直接用cache:false
$.ajax({
url:'www.haorooms.com',
dataType:'json',
data:{},
cache:false,
ifModified :true,
success:function(response){//操作
}async:false});
方法三:用隨機(jī)數(shù),隨機(jī)數(shù)也是避免緩存的一種很不錯(cuò)的方法!
URL 參數(shù)后加上 "?ran=" + Math.random(); //當(dāng)然這里參數(shù) ran可以任意取了
方法四:用隨機(jī)時(shí)間,和隨機(jī)數(shù)一樣。
在 URL 參數(shù)后加上 "?timestamp=" + new Date().getTime();
方法五:用php后端處理。
在 URL 參數(shù)后加上 在服務(wù)端加?header("Cache-Control: no-cache, must-revalidate");
總結(jié)
以上是生活随笔為你收集整理的php 微信怎么清除缓存,前端清除缓存方法(微信缓存引起的bug)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: SAP-ABAP学习日常
- 下一篇: Echarts实现“暂无数据”的几种方案