Mise en cache du bouton arrière d'Internet Explorer 10

Dans Internet Explorer 10, si vous appuyez sur le bouton Précédent, il tenterait d'aller chercher la page précédente à partir du cache du navigateur. Ce comportement diffère de pratiquement tous les autres navigateurs, y compris IE9, dans lequel le fait de presser le bouton arrière fera un rechargement complet de la page précédente au lieu de réutiliser le cache.

Comment puis-je communiquer avec IE10 à partir du site Web, éventuellement en utilisant javascript / headers etc. pour ne pas utiliser cette utilisation de cache pour le site à l'échelle mondiale?

(Remarque: je ne cherche pas un paramètre IE10 pour désactiver cela. Je recherche une solution qui peut être implémentée sur le site Web et non sur le navigateur pour indiquer à IE10 de ne pas utiliser ce cache pour le bouton de retour). Aussi, je cherche une solution globale qui fonctionne pour chaque page du site …

J'utilise PHP / Jquery pour le site

Alors voici plus d'informations

La page est un formulaire. Il contient des informations chargées dynamiquement. (Disons qu'il contient le nombre de fois où l'utilisateur a soumis le formulaire)

Vous cliquez sur le bouton de soumission du formulaire. Vous allez alors vous rediriger vers la page d'action du formulaire.

Ensuite, vous appuyez sur le bouton Précédent.

Dans tous les autres navigateurs, il faudrait recharger le formulaire initial avec le nouvel "nombre de fois que l'utilisateur a soumis le formulaire". Dans IE10, cependant, cela n'arrive pas … Comment puis-je que cela se produise dans IE 10.

Voici quelques exemples d'en-têtes:

1. Lorsque vous chargez d'abord le formulaire:

En-tête de requête

Key Value Request GET /path/to/my/page HTTP/1.1 Accept text/html, application/xhtml+xml, */* Accept-Language en-US User-Agent Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; WOW64; Trident/6.0) Accept-Encoding gzip, deflate Host myhost.com If-Modified-Since Tue, 10 Sep 2013 23:55:33 GMT If-None-Match "1378857333" DNT 1 Connection Keep-Alive Cookie __utma=104299925.1011127538.1340896287.1364829735.1378764406.12; __utmz=104299925.1340896287.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); has_js=1; __utmc=104299925; __qca=P0-1247924781-1340896285157; _mkto_trk=id:601-CPX-764&token:_mch-sadfsadfze.com-1358808312889-73607; __utma=171146939.775168663.1343066079.1375907514.1378762647.41; __utmz=171146939.1343066079.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); s_stats_browser_info=%7B%22pluginInfo%22%3A%7B%22pdf%22%3A%5B%22pdf%22%2C%22application/pdf%22%2C%220%22%5D%2C%22quicktime%22%3A%5B%22qt%22%2C%22video/quicktime%22%2C%220%22%5D%2C%22realplayer%22%3A%5B%22realp%22%2C%22audio/x-pn-realaudio-plugin%22%2C%220%22%5D%2C%22wma%22%3A%5B%22wma%22%2C%22application/x-mplayer2%22%2C%220%22%5D%2C%22director%22%3A%5B%22dir%22%2C%22application/x-director%22%2C%220%22%5D%2C%22flash%22%3A%5B%22fla%22%2C%22application/x-shockwave-flash%22%2C%220%22%5D%2C%22java%22%3A%5B%22java%22%2C%22application/x-java-vm%22%2C%221%22%5D%2C%22gears%22%3A%5B%22gears%22%2C%22application/x-googlegears%22%2C%220%22%5D%2C%22silverlight%22%3A%5B%22ag%22%2C%22application/x-silverlight%22%2C%220%22%5D%7D%2C%22res%22%3A%221920x1080%22%7D; _pk_id.2.1644=19232922ec6753dc.1371502517.1.1371502630.1371502517.; SESS569093948b0206b05eb2212616da3db6=1977iogjr841af2s8l4sd1cjd0; XDEBUG_SESSION=12250; has_js=1; __utmc=171146939 

En-tête de réponse:

 > Key Value Response HTTP/1.1 200 OK Date Tue, 10 Sep 2013 23:55:44 GMT > Server Apache/2.2.20 (Ubuntu) X-Powered-By PHP/5.4.15-1~tooptee10+1 > Last-Modified Tue, 10 Sep 2013 23:55:44 +0000 Cache-Control no-cache, > must-revalidate, post-check=0, pre-check=0 ETag "1378857344" > Keep-Alive timeout=15, max=9987 Connection Keep-Alive > Content-Type text/html; charset=utf-8 

2. Lorsque vous appuyez sur le bouton Précédent pour revenir à ce formulaire

En-tête de requête

 > Key Value > Request GET /path/to/my/page HTTP/1.1 > Accept text/html, application/xhtml+xml, */* > Accept-Language en-US > User-Agent Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; WOW64; Trident/6.0) > Accept-Encoding gzip, deflate > Host myhost.com 

En-tête de réponse

 > Key Value Response HTTP/1.1 304 Not Modified > X-Powered-By PHP/5.4.15-1~tooptee10+1 ETag "1378857344" > Keep-Alive timeout=15, max=9987 Content-Type text/html; charset=utf-8 > Content-Length 117183 Expires Tue, 10 Sep 2013 22:55:36 GMT > Last-Modified Tue, 10 Sep 2013 23:55:44 GMT 

Notez qu'il finit par renvoyer un 304. Lorsque j'ai essayé ceci dans Firefox, il est revenu 200 à la place lorsque vous appuyez sur le bouton Précédent.

Je pense que le comportement que vous voulez est un comportement qui supprime l'attente du bouton de retour pour les utilisateurs.

Les utilisateurs s'attendent à ce qu'ils retournent à la page qu'ils regardaient précédemment, dans l'état où ils se trouvaient quand ils l'ont laissé . La plupart des navigateurs modernes atteignent cela en mettant non seulement en cache la page, mais en conservant l'état de la page (y compris le contexte de Javascript) dans la mémoire afin que, lors du retour à la page via le bouton arrière, il soit dans le même état qu'il était avant, y compris tout ce qu'ils Écrit dans des formes ou tout Javascript avec lequel ils ont interagi.

Dans la plupart des navigateurs, vous pouvez le remplacer par la force en configurant des en Cache-Control têtes de Cache-Control tels que no-cache et no-store . Je ne sais pas si no-store ne fonctionnerait dans votre cas pour IE10, ou si IE10 ignore même cela et vient tout de suite à la page. Si c'était le cas, je ne pense pas que je le blâmerais vraiment. Cela fait l'intérêt de l'utilisateur d'être rapide et de revenir à la page comme c'était le cas avant.

Je pense que l'approche que je prendrais, et vous ne devez pas être d'accord avec moi, c'est ré-penser à la conception. Pourquoi avez-vous besoin que les utilisateurs frappent "retour" si vous ne leur montrez pas la même chose qu'ils ont vu quand ils étaient là-bas? Si vous souhaitez afficher un formulaire mis à jour, pourquoi ne pas rediriger après POST vers le formulaire, qui comptera en tant que nouveau chargement de page et en respectant vos en Cache-Control têtes de Cache-Control ? C'est ce que je ferais et c'est devenu une norme de facto.

C'est possible, mais je ne suis pas certain, que vous pourriez faire ce que vous voulez no-store , mais j'aimerais continuer à rediriger après POST plutôt que de ne pas compter sur le bouton de retour pour quelque chose d'autre Que de revenir à l'état précédent.

Vous pouvez configurer certains en-têtes en PHP

 Cache-Control: private, must-revalidate, max-age=0 Expires: Thu, 01 Jan 1970 00:00:00