Pourquoi ne pas honorer ma directive Safari cache-control?
-
25-09-2019 - |
Question
Il y a une page particulière que je voudrais que le navigateur de charger toujours, en particulier lorsque l'utilisateur appuie sur le bouton Retour du navigateur pour y accéder.
J'utilise la directive suivante 'Cache-Control' dans l'en-tête de cette page (en PHP directement à partir de mon code).
$headers['Cache-Control'] = 'no-store, no-cache, must-revalidate, max-age=0';
Cela fonctionne pour FF, IE et Chrome, mais Safari (5.0.1) semble ignorer la directive et ne parvient pas à recharger la page (sur plusieurs utilisateurs, il ne semble pas être un problème spécifique de configuration). Recherche n'a pas révélé de bugs connus, donc je suppose qu'il ya quelque chose de mal sur ma fin.
Les pointeurs seraient appréciés.
Mise à jour:. Vient de trouver cette réponse sur le SO
Safari navigateur ignorant mon no-cache
Avez pas encore essayé, mais semble prometteur. Très étrange qu'il est un ajout à l'étiquette de corps, donc Im sceptique.
La solution
La réponse est d'inclure l'attribut suivant dans la balise du corps pour forcer Safari à recharger la page:
onunload=""
Comme dans:
<body onunload="">
J'ai trouvé ici: navigateur Safari d'ignorer mon no-cache
Ce qui, à son tour, il a obtenu de ce fil: Y at-il une croix -browser événement onload en cliquant sur le bouton de retour?
Autres conseils
Voir aussi ce rapport de bogue Webkit: https://bugs.webkit.org/show_bug.cgi?id=71509
Je suis le même problème éprouvais, et il semble être d'être un bug dans Safari.