這篇文章主要講解決思路,不對各種概念進行過多講解。
這裡提到乙個概念,瀏覽器前進/後退快取,(backward/forward cache,bf cache),當然也有人叫disk cache。
bf cache 是一種瀏覽器優化,html標準並未指定其如何進行快取,因此快取行為是各瀏覽器實現不盡相同。
由於不是http快取,所以通過標頭檔案快取設定no-cache是無效的。當然也不能以http快取機制來理解bf cache。
從網上看了幾種比較常見的解決思路,下面簡單講解。
設定瀏覽歷史當前記錄
history.replacestate方法的引數與pushstate方法一模一樣,區別是它修改瀏覽歷史中當前紀錄。
var href = location.href;
var time = new date().gettime();
href += href.indexof('?') > -1 ? ('&time='+time) : ('?time=' + time);
history.replacestate({}, "title", href);
// 比如當前頁面位址為 通過history.replacestate修改後當前位址會變為
,
而是返回到中。
通過時間差來判斷是否需要重置
var prev = parseint(new date().gettime() / 1000);
var now = prev;
window.setinterval(function() else
// 間隔時間設定為1秒
}, 1000);
間隔輪詢時間差長度設定為多久比較好,不好掌控;
通過setinterval設定的間隔時間差並不是很精確;
並且兩個頁面之間的反覆切換速度非常迅速的情況下也許會出現監測不到的現象。
通過localstorage控制是否需要重新整理localstorage.setitem("need-refresh", true);
$(function ()
});
原理:通過獲取瀏覽器儲存的key來決定頁面是否需要重新整理
缺點:當頁面關閉再重新開啟時,key(也就是**中的need-refresh)key值為true,會導致頁面載入兩次,造成重複渲染
通過pageshow事件決定是否需要重新整理頁面
window.addeventlistener('pageshow', function(e)
});
關於瀏覽器快取
瀏覽器前進/後退快取(bf cache)
瀏覽器頁面進入、離開事件:pageshow/pagehide
解決微信返回上一頁之後,頁面不重新整理
function window.addeventlistener pagehide function 將上邊的 寫在a頁面的js檔案中 即可實現想要的效果.如下不需要手動重新整理就可以實現 備註 我的專案 window.localstorage.removeitem openiditem windo...
微信小程式返回上一頁傳參並重新整理
問題 需求 現在有這麼乙個需求 乙個商品支付頁面,點選優惠卷進入優惠券列表頁,選中優惠券後帶著資料再返回到支付頁面。方法 獲取頁面棧 let pages getcurrentpages 獲取所需頁面 let currpage pages pages.length 1 當前頁面 let prevpag...
微信小程式 返回上一頁重新整理或當前頁重新整理
bug 在onshow中執行this.onload 會導致頁面第一次載入的時候陣列載入兩次!造成原因 頁面載入先執行onload,再執行的onshow,就會出現在onload載入一次資料,在onshow中執行this.onload 在載入一次資料。解決辦法 將不需要重新整理的資料放在onload中執...