Je suis en train de compter sur le cache du navigateur pour tenir données JSON retour des appels AJAX dans jQuery.
l'activité du navigateur normal repose sur le cache du navigateur tout le temps. Exemple:.. Jpg et images GIF ne sont pas refetched sur un rechargement de la page p>
Mais quand j'essayer d'utiliser les appels ajax jQuery getJSON, je ne peux pas sembler éviter la récupération des données à partir du serveur p>
Mes têtes retournées ressemblent à ceci (confirmé avec firebug). p>
Transfer-Encoding: chunked Date: Wed, 05 Aug 2009 02:55:39 GMT Content-Type: text/plain; charset=ISO-8859-1 Expires: Wed, 05 Aug 2009 03:55:39 GMT Cache-Control: max-age=3600
5 Réponses :
Bien que pas le "cache de navigateur" Qu'en est-il de l'état de la session ou d'une autre forme d'économie du côté client. Vous devrez toujours examiner une situation si modifiée depuis la situation mentionnée dans votre commentaire. P>
Le navigateur ne saura pas de manière native si les données ont été modifiées ou non depuis que JSON ait récupéré de manière dynamique et ce qui est dans le cache est statique. Je pense? P>
La réponse courte est non. Malheureusement, les navigateurs ne cachent pas de manière fiable les demandes Ajax de la même manière qu'ils font des pages «normales». (Bien que les données puissent en fait être em> mises en cache, le navigateur ne utilise pas em> le cache lorsque la manipulation Ajax demande la façon dont vous vous attendez.) Cela devrait changer dans le futur , mais pour l'instant, vous devez travailler autour de cela. P>
Oui. Il est au mieux incompatible. Parfois, ils font quand on s'y attend le moins.
Vous voudrez peut-être vérifier vos ressources à l'aide du RESSOURCE Expert droid , pour vous assurer qu'ils font ce que vous faites intention. Vous devez également exécuter une trace réseau pour vérifier les en-têtes de demande et de réponse, en utilisant quelque chose comme Wireshark , dans Case Firebug ne dit pas l'histoire complète. P>
Il est possible que JQuery incluait des en-têtes de demande de manière à décider que le navigateur décide de contourner le cache. Avez-vous essayé une plaine xmlhttprequest code> sans cadre? P>
Le site Web n'est pas public, alors ne peut pas utiliser Redbot, mais merci. WireShark montre les mêmes en-têtes que les spectacles de Firebug. Je n'ai pas essayé XMLHTTPRequest directement (pointeur à un mode de fonctionnement?)
La référence classique XMLHTTPRequest: développeur.apple.com/internet/webcontent/xmlhttpreq.htmlle A> Si vous êtes vraiment désireux, vous pouvez installer Redbot localement.
La cache Ajax est possible et prévisible (au moins dans IE et Firefox). P>
Ce blog post discute d'Ajax Caching et a une page Web de démonstration: P>
http://blog.httpwatch.com / 2009/08/07 / AJAX-Caching-deux-IMPORTANT-FAITS / P>
Il y a aussi un suivi de Steve Souders sur la question F5: P>
a trouvé un lien pertinent ici après que l'auteur a réclamé que les caches de navigateur AJAX sont effectivement fiables. P>
Réclamation trouvée ici: http://davidwalsh.name/cache-ajax p>
lié ici: http://ajaxref.com/ch6/builtcatache.html < / p>
Peut-être que j'ai besoin d'utiliser si des demandes de modification si modifiées pour convertir ces codes d'état HTTP 304?
Darn, pas même des en-têtes "si modifiés" étant envoyés sur demande ... tellement pour une approche de 304
J'ai eu une chance avec l'établissement de l'ETAG lors de la demande initiale et de revenir 304 si l'en-tête NON-Aucun-Match 'existe sur des demandes ultérieures.