我正在使用jquery.ajax方法爲了向服務器發送GET請求,緩存應該被中斷,所以緩存設置爲false,到目前爲止這麼好。jQuery.ajax,緩存和時間戳
jQuery自動爲請求url添加一個時間戳(我猜是epoch-milliseconds),以便實現緩存。有沒有辦法控制jQuery使用的時間戳? (甚至幾秒鐘就足夠了,幫助服務器做它的緩存正常,...)
我正在使用jquery.ajax方法爲了向服務器發送GET請求,緩存應該被中斷,所以緩存設置爲false,到目前爲止這麼好。jQuery.ajax,緩存和時間戳
jQuery自動爲請求url添加一個時間戳(我猜是epoch-milliseconds),以便實現緩存。有沒有辦法控制jQuery使用的時間戳? (甚至幾秒鐘就足夠了,幫助服務器做它的緩存正常,...)
沒有手動更改jQuery的代碼,不乾淨。
潛入jQuery代碼中,我們看到由jQuery生成的nonce(在這種情況下只是時間戳)在這裏非常硬編碼。
https://github.com/jquery/jquery/blob/91850ecbbe04ad8f5d89dc050aa1d9002047c435/src/ajax.js(607線)
的nonce
變量有傳入,但如果我們遵循的線索回到它導致jQuery.now()
,這僅僅是(new Date).getTime()
的別名。
那麼你的選擇是:
1)追加到手動每個URI自己的價值,而忽略jQuery的價值。
2)髒。重寫jQuery的now()
函數以返回您尋求的值。只是想着它而讓我顫抖!這可能會導致其他意想不到的錯誤,所以我不會推薦它,但這是可能的。如果你仍然返回一個接近當前時間戳的時間戳,也許它不會太糟糕,但這可能不是你的情況。一個天真的例子:https://jsfiddle.net/pf5pskg5/
試試這個:
$.ajaxSetup({cache: false});
這樣做是讓瀏覽器緩存從不AJAX請求。
由於某些瀏覽器傾向於緩存AJAX請求,特別是當它們是HTTP GET請求時,我遇到了奇怪的行爲。
如果您沒有關閉AJAX請求緩存,則IE 11將嘗試使用其緩存的AJAX請求版本和由服務器返回的HTTP STATUS消息(「304 Not Modified」)。
這只是幫助我設置爲所有未來的請求緩存參數爲false。我想影響cache = false時正在使用什麼時間戳; – nabittened
@nabittened你爲什麼要這麼做?你最終想要完成什麼? – amphetamachine
如果時間戳是seonds,它可以幫助服務器仍然緩存併發的用戶請求。例如 http://server.com/request?_12345(想象一下,幾毫秒的例子) 和 http://server.com/request?_12346 無法被服務器緩存,如果內容沒有改變中的事件這個時間段 而 http://server.com/request?_12和 http://server.com/request?_12 仍然可以被緩存,http://server.com/request? _13將是一個新的(來自另一個或同一個用戶) – nabittened
thx爲快速回復,所以我將不得不手動(不是骯髒的版本;-)) – nabittened