439 votes

Combien de temps les navigateurs mettent-ils en cache les 301 HTTP ?

Je suis en train de déboguer un problème avec une redirection permanente HTTP 301. Après un test rapide, il semble que Safari vide son cache des 301 lorsqu'il est redémarré, mais pas Firefox.

Quand IE, Chrome, Firefox et Safari vident-ils leur cache des 301 ?

MISE À JOUR : Par exemple, si je veux rediriger example1.com a example2.com mais je l'ai accidentellement paramétré pour qu'il redirige vers example3.com c'est un problème. Je peux corriger l'erreur, mais toute personne qui a visité example1.com entre-temps aura mis en cache la redirection incorrecte vers example3.com et ne pourront donc atteindre ni l'un ni l'autre. example1.com o example2.com jusqu'à ce que leur cache soit vidé. Après enquête, j'ai découvert qu'il n'y avait pas Cache-Control y Expires Les en-têtes sont fixés. Les en-têtes de la réponse 301 incorrecte auraient été les suivants :

HTTP/1.1 301 Moved Permanently
Date: Wed, 27 Feb 2013 12:05:53 GMT
Server: Apache/2.2.21 (Unix) DAV/2 PHP/5.3.8
X-Powered-By: PHP/5.3.8
Location: http://example3.com/
Content-Type: text/html

Mes propres tests le montrent :

  • IE7, IE8, Android 2.3.4 n'ont pas de cache du tout.
  • Firefox 18.0.2, Safari 5.1.7 (sur Windows 7) et Opera 12.14, tous les caches, et vider le cache au redémarrage du navigateur.
  • IE10 et Chrome 25 ont un cache, mais ne le vident pas au redémarrage du navigateur, Alors, quand est-ce qu'ils vont se libérer ?

12 votes

S'il vous plaît, dites à Chrome que nous avons besoin d'un moyen de sortir de ce trou de l'enfer 301 : bugs.chromium.org/p/chromium/issues/

0 votes

Comme le problème affecte tous les navigateurs, seul l'IETF pourrait le résoudre, probablement en définissant un délai obligatoire pour les 301 en cache qui n'ont pas de TTL, de sorte que les navigateurs finissent par revérifier leurs hypothèses en cache.

1 votes

J'ai lancé une discussion sur la liste de diffusion de l'IETF à ce sujet, si quelqu'un qui suit encore cette question a envie de s'exprimer : lists.w3.org/Archives/Public/ietf-http-wg/2017OctDec/0363.html

24voto

Alex J Points 261

301 est une réponse pouvant être mise en cache selon la RFC HTTP et les navigateurs la mettront en cache en fonction des en-têtes de mise en cache HTTP que vous avez placés sur la réponse. Utilisez FireBug ou Charles pour examiner les en-têtes de réponse afin de connaître la durée exacte de la mise en cache de la réponse.

Si vous souhaitez contrôler la durée de la mise en cache, vous pouvez utiliser les en-têtes de réponse HTTP. Cache-Control y Expires pour faire de même. Alternativement, si vous ne voulez pas mettre en cache le fichier 301 utilisez les en-têtes suivants.

Cache-Control: no-store, no-cache, must-revalidate
Expires: Thu, 01 Jan 1970 00:00:00 GMT

16 votes

Bien que techniquement correcte, votre réponse ne répond pas à la question des utilisateurs et donc pas à la question pour laquelle je suis venu ici. Quand les 301 existants, sans en-tête de cache, qui se trouvent déjà dans le navigateur expirent-ils pour les principaux navigateurs ?

0 votes

Si quelqu'un est toujours intéressé, ce lien les instructions peuvent basculer le cache pour 301.

0 votes

Le lien est pour FF et cela n'a pas fonctionné pour moi. J'ai installé l'extension web developer 1.2.5 et j'utilise FF 23.0.1.

21voto

Ajeh Emeke Jnr Points 133

Confirmé ! l'utilisateur soumet une requête de poste à l'url concernée et la redirection en cache est oubliée.

Une victoire rapide serait d'entrer ceci dans la console du navigateur si vous le pouvez :

fetch('example.com/affected/link', {method: 'post'}).then(() => {})

Utile si vous connaissez le navigateur affecté (surtout pendant le développement).

Ou bien Si vous avez accès à la page de redirection 301 précédente, vous pouvez ajouter ce script à la page et chaque fois qu'elle sera visitée, la redirection 301 en cache sera oubliée.

0 votes

Cette méthode est similaire au formulaire de poste ci-dessus, mais elle demande moins d'efforts.

15voto

John Tribe Points 404

Je vais poster la réponse qui m'a aidé :

aller à l'url :

chrome://settings/clearBrowserData

il devrait invoquer la popup et ensuite

  • sélectionner uniquement : cached images and files .
  • sélectionner la case horaire : from beginning

0 votes

Fonctionne dans Chrome 79 !

8voto

phil han Points 109

Comme réponse de @thomasrutter

Si vous avez précédemment émis une redirection 301 mais que vous souhaitez annuler cette opération

Si les internautes ont toujours la redirection 301 en cache dans leur navigateur, ils continueront d'être dirigés vers la page cible, même si la page source a toujours la redirection en place. Vous avez plusieurs possibilités pour résoudre ce problème :

La solution la plus simple et la meilleure est d'effectuer une nouvelle redirection 301.

Le navigateur se rendra compte qu'il est redirigé vers ce qu'il croyait être une URL déclassée, ce qui devrait l'amener à récupérer à nouveau cette URL pour confirmer que l'ancienne redirection n'est plus là.

Si vous n'avez pas le contrôle du site vers lequel la cible de redirection précédente est allée, alors vous n'avez pas de chance. Essayez de supplier le propriétaire du site de vous rediriger vers lui.

En fait, cela signifie :

  1. a.com 301 vers b.com

  2. supprimer les 301 de a.com

  3. ajouter b.com 301 à a.com

Alors ça marche.

2 votes

Mais alors vous avez toujours la 301 de b.com qui traîne : ( - une sale solution

1 votes

Pouvez-vous effacer une redirection en émettant une autre 301 à partir d'un fichier différents page ? par exemple ( a.com 301 -> b.com) (supprimer a.com s 301) (ajouter a.com/abcdefg 301 -> a.com ) et obliger le client à afficher a.com/abcdefg en quelque sorte ?

0 votes

Merci, ça marche ! Testé sur IE11, Firefox 52, Safari 10, Chrome 57

7voto

snm-yah Points 2067

À des fins de test (pour éviter les redirections en cache), les gens peuvent ouvrir NOUVELLE FENÊTRE PRIVÉE : click CTRL+SHIFT+N [si vous utilisez Mozilla, utilisez P ]

0 votes

Cela a été dévalorisé, probablement parce que la promesse principale de la "fenêtre privée" n'est pas d'ÉCRIRE dans les caches, mais peut toujours les LIRE/REUTILISER. MAIS pour moi, sur Firefox 37.0.1 (Linux), cela a fonctionné et a été très rapide et utile. La fenêtre privée reflète les paramètres actuels/hors cache du serveur web, alors que les onglets normaux du navigateur utilisent une redirection 301 en cache.

0 votes

Alfonx : La fenêtre privée ne peut pas réutiliser le cache simplement parce que le propriétaire du serveur pourrait utiliser les éléments à la manière d'un cookie révélant l'identité précédente de cet utilisateur. Bien que je doive concéder que la réutilisation du cache est probablement sans danger contre une épouse détestant le porno.

6 votes

Cela ne fonctionne pas si vous avez déjà une 301 en cache. Private utilisera en effet la redirection qui est mise en cache.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X