2016-12-14 86 views
0

從Ajax請求禁用緩存文件,你可以使用jQuery的jQuery如何禁用AJAX緩存?

$.ajaxSetup({ 
    cache: false 
}); 

但如何jQuery的做到這一點?我知道jQuery是一個JavaScript庫,所以無論用jQuery做什麼都可以用純javascript完成。所以我的問題是:什麼是JavaScript代碼,jQuery使用引擎蓋關閉ajax文件緩存

回答

1

這是緩存

 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始終不同。

+0

謝謝Vimo! –

1

我認爲,現在的瀏覽器使用onunload = function(){}就這樣(是的,沒錯)以防止瀏覽器緩存網頁,因爲它是當你離開它去到另一個網頁。

然而,重要的是,當瀏覽器具有src屬性時,它不能記住從<script type='text/javascript' src='somePage.js'></script>標籤加載的JavaScript。如果您在實時網站上更改JavaScript,則需要更改該文件的名稱,或者,如果客戶端尚未清除緩存,則瀏覽器會嘗試加載該文件,因爲它記住了該文件。

0

關閉瀏覽器緩存Ajax請求的最簡單方法是使用基於時間的查詢字符串參數。

var t = new Date().getTime(); 

console.log('some-url?_='+t); 

這產生以下查詢字符串

?_ = 1481683928873

該瀏覽器將認爲這是一個不同的請求(假設它不僅使每微秒一個),它會從服務器請求內容,而不是從其緩存中提供內容。

0

如果你讀了docs他們說:

cache (default: true, false for dataType 'script' and 'jsonp') 
Type: Boolean 

如果設置爲false,這將迫使請求的頁面不被瀏覽器緩存。注意:將緩存設置爲false只能在HEAD和GET請求中正常工作。它通過在GET參數中附加「_ = {timestamp}」來工作。其他類型的請求不需要該參數,除了在IE8中對POST已經請求的URL進行POST時以外。