2016-12-14 1 views
0

Um das Caching von Dateien von Ajax-Anfragen zu deaktivieren, können Sie die Verwendung von jQueryWie deaktiviert jQuery das AJAX-Caching?

$.ajaxSetup({ 
    cache: false 
}); 

Aber wie jQuery dies tun? Ich weiß, dass jQuery eine Javascript-Bibliothek ist, also kann alles, was mit jQuery gemacht werden kann, mit einfachem Javascript gemacht werden. Also meine Frage ist: Was ist der Javascript-Code, den jQuery unter der Haube verwendet, um die Zwischenspeicherung von Ajax-Dateien zu deaktivieren?

Antwort

1

Dies ist die Quelle des Cache

 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 Option AJAX ist, Wenn Sie falsch gesetzt zwischenzuspeichern, Es wird eine Suche in den Sie URL-Anfrage, Die 'Nonce' ist jQuery. jetzt(), Es ist eine Zeit; So wird Browser nicht Benutzer-Cache, wenn Sie Ajax senden, Anfrage immer differnt.

+0

Danke Vimo! –

1

Ich denke, dass heutige Browser verwenden onunload = function(){} einfach so (ja, genau) den Browser von Zwischenspeichern einer Webseite zu verhindern, wie es war, wenn Sie es verlassen auf eine andere Seite zu gehen.

Es ist jedoch wichtig zu verstehen, dass das nicht dasselbe ist wie die Fähigkeit des Browsers, sich das von Ihren <script type='text/javascript' src='somePage.js'></script>-Tags geladene JavaScript zu merken, wenn dieses Attribut src ist. Wenn Sie Ihr JavaScript auf einer Live-Site ändern, sollten Sie den Namen dieser Datei ändern. Wenn der Client den Cache nicht gelöscht hat, versucht der Browser, die Datei so zu laden, wie sie sich merkt.

0

Die Browser-Zwischenspeicherung von Ajax-Anforderungen wird am einfachsten mit einem zeitabhängigen Abfragezeichenfolgenparameter beendet. (Macht nur eine pro Mikrosekunde es unter der Annahme)

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

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

Diese den folgenden Abfrage-String

? _ = 1481683928873

Der Browser wird dies als eine andere Anforderung ergibt, und es wird Fordern Sie den Inhalt vom Server an, statt ihn aus seinem Cache zu bedienen.

0

Wenn Sie die docs lesen sie sagen:

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

Wenn auf false gesetzt ist, wird es angeforderten Seiten Kraft nicht vom Browser zwischengespeichert werden. Hinweis: Das Setzen des Cache auf "false" funktioniert nur bei HEAD- und GET-Anfragen. Es funktioniert, indem "_ = {timestamp}" an die GET-Parameter angehängt wird. Der Parameter wird nicht für andere Arten von Anforderungen benötigt, außer in IE8, wenn ein POST an eine URL gesendet wird, die bereits von einem GET angefordert wurde.

Verwandte Themen