Je travaille sur un eshop avec une calculatrice pour calculer votre prêt. J'ai besoin d'un nouvel aperçu à ce sujet ... Imaginez cette situation:Problème de mise en cache du navigateur JS/AJAX
- L'utilisateur clique sur l'un des boutons pour faire une requête POST (jQuery) et remplir les données requises.
- utilisateur clique ajouter au panier et va au panier
- utilisateur clique bouton retour (navigateur)
page chargement, serveur remplit les données dans la calculatrice (par défaut), mais après c'est fait, le navigateur remplit les données JS du cache et une chose amusante arrive. Les données sont combinées et lorsque l'utilisateur ajoute le produit à son panier, il se trompe, mais le prix est valide. Une partie valide est ce que le serveur remplit et le reste vient du cache.
J'ai essayé d'utiliser les balises meta pour empêcher la mise en cache, j'ai dit jquery à pas cache la requête POST et même dans mon répondeur, j'ai plusieurs en-têtes qui disent - NE PAS CACHE. Pourtant, les données POST sont mises en cache et je n'ai aucune idée de comment l'éteindre ou le rafraîchir ou quoi que ce soit ... Quand je regarde les en-têtes qui reviennent avec les données json, l'en-tête expire est mis à l'année 2099, même même si j'ai dit que ce devrait être un an du passé. En dehors de cela, je ne sais vraiment pas ce qui pourrait causer ce problème.
Voici les en-têtes définis dans répondeur et ce qui ramène:
header("Expires: Mon, 26 Jul 1999 05:00:00 GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . "GMT");
header("Cache-Control: no-cache, must-revalidate");
header("Pragma: no-cache");
header("Content-type: text/x-json");
Cela revient (de Firebug):
Date Fri, 17 Sep 2010 08:39:38 GMT
X-Powered-By PHP/5.1.6
Connection Keep-Alive
Content-Length 126
Pragma no-cache
Last-Modified Fri, 17 Sep 2010 08:39:38GMT
Server Apache
Content-Type text/x-json
Cache-Control no-cache, must-revalidate
Expires Mon, 26 Jul 2099 05:00:00 GMT
Remarque: lorsque je désactive le cache dans les préférences du navigateur, il fonctionne comme un charme.
Toutes les idées sont les bienvenues!
Edit:
J'ai essayé quelques heures fictives avant, mais cela ne le résoudre. Pour le dire tout le problème est que lorsque l'utilisateur clique sur le bouton de retour, la page wont actualiser, mais sa lecture à partir du cache, ou au moins les données qui viennent d'ajax sont mis en cache et sont remplis.
Donc, fondamentalement, j'ai besoin d'actualiser la page d'une manière intelligente lorsque l'utilisateur clique sur le bouton précédent. Notez que les cookies ne sont pas une option, parce que (peut-être un petit pourcentage, mais encore) certaines personnes n'ont pas de cookies autorisés.
'header (" Expire le: lun, 26 juil 2099 05:00:00 GMT ");' cela me semble vraiment indiquer que vous définissez l'heure d'expiration exactement à ce que vous voyez dans Firebug, et vous ne le réglons pas à quelques années dans le passé. – Matt
lol, vous aviez raison, mais il n'a toujours pas résolu mon problème. Quand j'ai cliqué en arrière les données étaient encore cachées ... – realshadow