Es ist eigentlich nicht die Schuld von jQuery. Nach der Dokumentation:
Die Einstellung von
cache
auffalse
funktioniert nur mit HEAD- und GET-Anfragen. Es funktioniert durch Anhängen von"_={timestamp}"
an die GET-Parameter.
Also zwingt es den Browser tatsächlich, eine neue Kopie der angeforderten Ressource zu laden, indem er sie durch Ändern der URL trickst. Daher denkt der Browser, dass es sich um eine neue Anfrage handelt, und lädt sie dann erneut vom Server. Es nicht tatsächlich die Antwort irgendwo zwischen.
Das Zwischenspeichern der Antworten ist ein Teil des Browsers, und um diese Rolle zu spielen, benötigt es entsprechende Cache-Header. Ich kann sehen, Ihre Antwort enthält keine passenden Header, wie von @elegisandi in den Kommentaren angegeben. Also gibt es zwei mögliche Lösungen für dieses Problem.
Sie müssen die Antwortheader ändern, damit der Browser die Antwort zwischenspeichern kann. Diese Frage und ihre Antworten können Ihnen bei der Einrichtung helfen.
Sie können die Antwort der Anforderungen in einem JavaScript-Objekt manuell zwischenspeichern. Aber Vorsicht, Sie müssen diese manuell ablaufen lassen. Hier ist ein Beispiel dafür:
%Vor% Wenn Sie eine Anforderung zum zweiten Mal an dieselbe URL senden, wird die Antwort tatsächlich vom Cache zurückgegeben. Außerdem können wir die Funktion ajaxCall
so anpassen, dass sie auch die Anforderungsmethode überprüft.
Die Option jQuery
ajax
cache
( Ссылка ) kontrolliert nur, ob der Browser die Option verwenden kann normale Caching-Strategien. Die Standardeinstellung lautet true
.
Um das Caching hier tatsächlich zu nutzen, sollte der Server (Ihre Laravel-Anwendung) dem Client mitteilen, dass den Rückgabewert zwischenspeichern kann.
Im Moment ( Cache-Control: no-cache, private
) verbietet es dem Client ausdrücklich, das Ergebnis zwischenzuspeichern.
Der Header Cache-Control
ist sehr vielseitig (siehe Ссылка ), aber Sie könnte beispielsweise einen Wert von Cache-Control: public
zurückgeben, um dem Client mitzuteilen, dass die Ressource öffentlich ist und immer zwischengespeichert werden kann.
Sie können dies in Ihrer Controller-Aktion wie folgt tun:
%Vor%Sie müssen das Antwortverhalten auf der Serverseite ändern:
%Vor%Tags und Links jquery laravel laravel-5.4 laravel-5.3