從Ajax請求禁用緩存文件,你可以使用jQuery的jQuery如何禁用AJAX緩存?
$.ajaxSetup({
cache: false
});
但如何jQuery的做到這一點?我知道jQuery是一個JavaScript庫,所以無論用jQuery做什麼都可以用純javascript完成。所以我的問題是:什麼是JavaScript代碼,jQuery使用引擎蓋關閉ajax文件緩存?
從Ajax請求禁用緩存文件,你可以使用jQuery的jQuery如何禁用AJAX緩存?
$.ajaxSetup({
cache: false
});
但如何jQuery的做到這一點?我知道jQuery是一個JavaScript庫,所以無論用jQuery做什麼都可以用純javascript完成。所以我的問題是:什麼是JavaScript代碼,jQuery使用引擎蓋關閉ajax文件緩存?
這是緩存
if (s.cache === false) {
s.url = rts.test(cacheURL) ?
// If there is already a '_' parameter, set its value
cacheURL.replace(rts, "$1_=" + nonce++) :
// Otherwise add one to the end
cacheURL + (rquery.test(cacheURL) ? "&" : "?") + "_=" + nonce++;
}
s是阿賈克斯的選項, 如果設置緩存錯誤,它會向你請求的URL添加一個搜索, 的「現時」是jQuery的來源。現在(),這是一個時間; 因此,當您發送ajax時,瀏覽器不會用戶緩存,請求url始終不同。
我認爲,現在的瀏覽器使用onunload = function(){}
就這樣(是的,沒錯)以防止瀏覽器緩存網頁,因爲它是當你離開它去到另一個網頁。
然而,重要的是,當瀏覽器具有src
屬性時,它不能記住從<script type='text/javascript' src='somePage.js'></script>
標籤加載的JavaScript。如果您在實時網站上更改JavaScript,則需要更改該文件的名稱,或者,如果客戶端尚未清除緩存,則瀏覽器會嘗試加載該文件,因爲它記住了該文件。
關閉瀏覽器緩存Ajax請求的最簡單方法是使用基於時間的查詢字符串參數。
var t = new Date().getTime();
console.log('some-url?_='+t);
這產生以下查詢字符串
?_ = 1481683928873
該瀏覽器將認爲這是一個不同的請求(假設它不僅使每微秒一個),它會從服務器請求內容,而不是從其緩存中提供內容。
如果你讀了docs他們說:
cache (default: true, false for dataType 'script' and 'jsonp')
Type: Boolean
如果設置爲false,這將迫使請求的頁面不被瀏覽器緩存。注意:將緩存設置爲false只能在HEAD和GET請求中正常工作。它通過在GET參數中附加「_ = {timestamp}」來工作。其他類型的請求不需要該參數,除了在IE8中對POST已經請求的URL進行POST時以外。
謝謝Vimo! –