Firefox 5 'cache' les redirections 301


92

Existe-t-il un moyen de désactiver cette «fonctionnalité»?

Par exemple, si une demande est faite à http://localhost/foo.htmlcelle que j'ai spécifiée à '301' à l'adresse racine, toutes les demandes ultérieures pour foo.htmlcontourner complètement le serveur Web et ffox 5 vérifiera son cache, lira que cette URL était '301' précédemment et rediriger sans même vérifier un changement.

Si je me suis arrêté foo.htmlde 301, je dois vider le cache de Firefox afin de «réparer» ce problème.

Chrome, IE et la version précédente de Firefox ne le font pas.


Même la suppression du cache ne résout pas cette erreur pour moi (Firefox 17.0.1, Linux).
Konrad Höffner

2
@kirdie Dans la boîte de dialogue "effacer l'historique récent", assurez-vous de définir la plage horaire sur "tout" et cochez la case "cache". Si la période sélectionnée est plus récente que vos visites à l'URL redirigée, l'entrée du cache ne sera pas effacée.
Kelvin

13
@kirdie et tout le monde avec le même problème: Regardez l'historique avec Ctrl + H. Puis faites un clic droit sur le site et choisissez "supprimer tout l'historique de ce site" (ou quelque chose de similaire). Cela l'a fait pour moi.
Lars Nyström

4
@ LarsNyström: Développer une application Web et j'ai rencontré ça - votre suggestion a fonctionné parfaitement pour moi. C'était "Oubliez ce site" dans FF20.0
cincodenada

1
Le 301 n'est-il pas appelé "déplacé en permanence " Si j'ai un serveur qui ne sert que https et que les gens accèdent à mon nom de domaine en utilisant http (assez mauvais car ils vont révéler l'URI de la demande), j'aimerais que le navigateur se souvienne cela en permanence et ne pas vérifier http à chaque fois.

Réponses:


45

301 est juste un code de réponse normal pouvant être mis en cache. http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.3.2 dit:

This response is cacheable unless indicated otherwise. 

Donc, si vous ne voulez pas qu'il soit mis en cache, votre serveur doit indiquer le contraire via les en-têtes normaux utilisés pour contrôler le comportement du cache.

Vous pouvez également vider le cache manuellement .


7
Je pense qu'il serait plus simple d'utiliser un 302 à la place, qui ne peut pas être mis en cache par défaut.
Frank Farmer

22
@Boris Zbarsky: La question n'est-elle pas plus "Comment vider le cache" plutôt que "Comment puis-je empêcher l'écriture du cache en premier lieu"?
Bobby Jack

4
La question me semblait bien sûr "Comment éviter de devoir vider le cache"!
Boris Zbarsky

17
Ça craint parce que vous ne pouvez pas "recharger" une redirection même si vous savez que c'est faux. Toutes les autres mauvaises ressources mises en cache peuvent être rechargées séparément, mais pas ces fichues redirections.
Sam Watkins

1
J'ai essayé d'utiliser les redirections 302 d'IIS, mais les versions récentes de Firefox (et Chrome et Edge et IE) les mettent également en cache, à en juger par leur comportement. J'ai trouvé que l'ouverture et la suppression d'une fenêtre privée est le meilleur moyen de tester des sites Web et d'éviter d'empoisonner le cache de votre navigateur.
dsmtoday

116

Dans Firefox si vous avez le module complémentaire de la barre d'outils "développeur web". Vous pouvez cliquer sur désactiver -> désactiver le cache -> vérifier la nouvelle version de la page à chaque fois. Rechargez ensuite l'URL et cela actualisera votre cache. Vous n'avez donc pas besoin de vider votre cache complet.

À partir du commentaire de cptstubing06, ce qui suit peut aider à vider le cache:

  1. Tapez Ctrl+lpour placer le curseur sur la barre d'adresse.
  2. Tapez about:configpour ouvrir les paramètres de configuration .
  3. Confirmez tous les avertissements.
  4. Tapez browser.cachesuivi de Enterpour filtrer les paramètres.
  5. Double-cliquez browser.cache.check_doc_frequency .
  6. Changer la valeur de 3à1 .
  7. Cliquez sur OK .
  8. Revisitez la page 301 mise en cache obsessionnellement.
  9. Remettez la fréquence à 3 lorsque vous avez terminé.

Firefox devrait maintenant rediriger vers la nouvelle page 301, ne récupérant plus la page redirigée du cache.


4
C'est une excellente solution pour moi - je veux une mise en cache 301 99% du temps, mais une fois dans un bleu, je pourrais avoir besoin de changer l'emplacement de la redirection et ne pas vouloir vider mon cache ENTIER. Juste pour clarifier, Firefox est livré avec son propre Web Developermenu sous outils, qui n'est pas l'addon. L'addon est également appelé Web Developer, mais apparaît dans votre menu Outils Web Developer Extensionet peut être téléchargé ici: addons.mozilla.org/en-us/firefox/addon/web-developer .
cptstubing06

5
Remarque: si vous souhaitez que Firefox mette à jour son cache pour votre URL redirigée, vous pouvez utiliser Web Developer Extensionpour contrôler temporairement le comportement de changement de Firefox pour toujours rechercher une nouvelle version, puis le remettre à votre paramètre normal. C'est sous l'extension Web Develoepr -> Désactiver -> Désactiver le cache -> Vérifier la version la plus récente de la page -> Vérifier la version la plus récente de la page à chaque fois.
cptstubing06

1
Quelle que soit la méthode que vous choisissez, la procédure consiste à modifier ce paramètre pour toujours rechercher une nouvelle version, puis à charger votre URL contenant la redirection mise en cache. Il atteindra alors le serveur et obtiendra toute nouvelle réponse existante pour cette URL et mettra à jour son cache avec la nouvelle réponse. Ensuite, vous pouvez redéfinir votre fréquence de vérification du cache sur votre valeur d'origine (la valeur par défaut est "Lorsque la page est obsolète", mais je vais utiliser "Une fois par session" afin que ce scénario exact soit géré sans ma participation maintenant).
cptstubing06

@ cptstubing06 merci pour cette astuce! J'aurais aimé que vous l'ayez soumis comme solution afin que je puisse le voter comme le meilleur moyen de gérer cela lorsque vous ne voulez pas vider tout votre cache.
Mercurybullet

Pour info, vous devrez peut-être désactiver DNS over HTTPSpour que cela fonctionne comme prévu.
user2741287

25

Je viens de rencontrer ce problème, et pour moi, c'était deux problèmes.

Ce nom de domaine particulier est acheminé via Cloudflare, j'ai donc dû le mettre en mode développement. Je pense que Cloudflare mettait en cache la redirection 301 afin de ne pas avoir à envoyer la demande au serveur. Cette étape peut ne pas s'appliquer à vous évidemment.

Ensuite, j'ai simplement effacé mon cache Firefox (version 11) en allant dans Outils -> Options, en cliquant sur le bouton Avancé en haut à droite, en sélectionnant l'onglet Réseau, puis en cliquant sur Effacer maintenant dans la section Contenu Web mis en cache. Notez que mon cache était déjà défini sur 0, mais je devais quand même cliquer sur le bouton Effacer maintenant pour que la redirection cesse d'être mise en cache.

Je serais intéressé de savoir si quelqu'un d'autre peut vérifier cela.


2
+1. Votre note sur la suppression du cache de Firefox a résolu ce problème pour moi (en tant qu'utilisateur / client, et non propriétaire du site Web) pour une URL particulière où Firefox ne récupérait pas un 301 ayant été mis à jour. Merci.
Jon Schneider

1
Vous pouvez supprimer la seule redirection mise en cache avec ce plugin Firefox: addons.mozilla.org/en-us/firefox/addon/cacheviewer-continued
Steve

9

J'ai trouvé une solution pour cela qui fonctionne sur Firefox 26, après avoir mis en cache une redirection obsolète pendant plus d'un mois et un redémarrage.

  1. Dans le menu Historique, choisissez Afficher tout l'historique.
  2. Dans la recherche, saisissez le domaine avec le problème de redirection mis en cache pour afficher une liste de résultats.
  3. Faites un clic droit sur l'un d'eux et choisissez "Oublier ce site".

Toutes les pages, images et redirections mises en cache pour ce site uniquement seront supprimées du cache. Cela vous permet d'effacer la redirection de votre site Web de développement sans effacer le reste de votre cache.

En remarque, je pense que Firefox ne devrait mettre en cache les redirections que pendant quelques jours au maximum. Les mettre en cache pendant plus d'un mois peut faire d'une simple erreur un gros problème.


2
Cela fonctionne, mais notez que "Oubliez ce site" oubliera également l'historique des URL (pour l'auto-complétion) et même les mots de passe enregistrés pour l'ensemble du domaine. Ce n'est peut-être pas ce que tu veux.
tanius

5

Une solution rapide consiste à utiliser une fenêtre de navigateur privée.


C'est ma solution rapide, et parfois simplement ajouter un point d'interrogation à la fin de l'URL peut faire l'affaire.
johnsnails

5

Les outils de développement intégrés aux versions récentes de Firefox ont une solution pour cela. Tout d'abord, désactivez la mise en cache lorsque le volet de développement est ouvert:

  • Sur n'importe quelle page, appuyez sur F12 pour afficher les outils de développement
  • À l'extrême droite, cliquez sur l'icône d'engrenage "Options de la boîte à outils"
  • Sous Advanced Settingscochez l'optionDisable Cache (when toolbox is open)

Désormais, chaque fois que vous souhaitez forcer l'actualisation d'une page mise en cache, chargez / actualisez la page avec la boîte à outils de développement F12 ouverte. Firefox contournera le cache et obtiendra de nouvelles données du serveur.

Je préfère cette méthode car elle ne change pas le comportement du navigateur pour une navigation "normale" sans débogage, et vous ne risquez pas d'oublier de restaurer un paramètre global à sa valeur d'origine.

Vérifié dans Firefox 39


1
Cela n'aide pas les redirections en cache.
SuperDuck

3

Un 301 indique déplacé en permanence. Par conséquent, je pense qu'il est raisonnable de mettre en cache la réponse.

Avez-vous essayé de définir les en cache-control- expirestêtes et ?

http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9


3
Parfois, nous développons ou migrons des serveurs, ou recherchons une panne, et avons vraiment besoin de désactiver cette fonctionnalité car elle peut vraiment gêner.
Jason

2

Dans Firefox version 38.0

Menu -> Edit -> Preferences -> Advanced -> Network -> Clear Now

A travaillé pour moi.


1

301 signifie déplacé de manière permanente et peut être mis en cache, donc je pense que c'est le "bon" comportement pour le navigateur. Vous devez utiliser 303 See Other .


5
Le cache 303 d'IE et de Chrome et la spécification HTTP sont en cours de modification pour permettre sa mise en cache. Consultez les brouillons sur tools.ietf.org/html/draft-ietf-httpbis-p2-semantics-15 . Ainsi, le seul moyen sûr d'empêcher la mise en cache de redirection est de définir des en-têtes de contrôle de cache explicites.
Boris Zbarsky
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.