38 votes

Comment empêcher Chrome d'envoyer Cache-control : max-age=0 lorsque j'appuie sur la touche Entrée ?

Je suis sur un connexion légèrement défectueuse et j'essaie d'améliorer mon expérience de navigation avec l'utilisation d'un proxy local. D'après ma recherche Cependant, si j'appuie sur la touche "Entrée" de mon navigateur sur une URL existante, un message d'erreur sera envoyé. Cache-Control: max-age=0 au proxy qui, à son tour, fera des allers-retours avec le serveur pour revalider le contenu.

Je n'en ai pas particulièrement envie ; si l'objet est périmé, le cache le récupérera à nouveau, mais s'il n'est pas périmé, je ne vois pas pourquoi je voudrais que l'objet soit revalidé à chaque fois. Si je pense que la page est ancienne, j'ai shift-F5 et je n'ai pas peur de l'utiliser.

Existe-t-il un paramètre à régler dans les coulisses de Chrome pour désactiver ce comportement gênant ?

31voto

Svenny Points 299

J'ai constaté que si vous naviguez vers une page par le biais du bouton retour ou d'un lien, Chrome n'envoie pas l'en-tête max-age=0 et utilise généralement (si le serveur apache de l'autre côté est configuré pour la mise en cache) une version en cache de la page.

Toutefois, lorsque vous saisissez l'URL (par exemple www.example.com/abcd/index.html) directement dans la barre d'adresse et que vous appuyez ensuite sur la touche Return Chrome enverra toujours l'adresse Cache-Control: max-age=0 ce qui permet de contourner la mise en cache.

6voto

Jeremy W Points 3609

Il est possible de modifier les en-têtes que Chrome envoie à un serveur Web en utilisant des scripts d'utilisateur (comme greasemonkey) ou des extensions. Voici une extension qui devrait fonctionner : ModHeader

Selon l'introduction et la capture d'écran, l'ajout d'un en-tête tel que cache-control max-age=1000 devrait être relativement simple. Il prend également en charge les listes blanches de domaines pour empêcher l'envoi d'en-têtes à des sites Web spécifiques. Vous devrez peut-être activer certaines expériences dans chrome://flags pour que cela fonctionne.

demo of adding headers

0voto

Sunil Dabburi Points 109

Les navigateurs se comportent en fonction des en-têtes de réponse qu'ils reçoivent. Si le navigateur reçoit des en-têtes de réponse comme

Cache-Control: private
Expires: Thu, 01 Jan 1970 00:00:00 UTC

alors, le navigateur demanderait toujours avec Cache-Control: max-age=0 . Cela se produit généralement avec le conteneur Tomcat, où l'option BaseAuthenticator ajoute ces en-têtes de réponse lorsque la variable disableProxyCaching est vrai. Si vous êtes confronté à un problème similaire, vous pouvez visiter cette page. lien pour la solution.

J'espère que cela vous aidera dans une certaine mesure :)

0voto

tomtaylor Points 1384

J'essaie de tester la mise en cache sur mon site web et je dois donc simuler un "nouvel utilisateur". Max-Age: 0 ce qui signifie que le cache du serveur est contourné et que je ne peux pas tester la mise en cache côté serveur.

J'ai trouvé que ce qui fonctionnait le mieux pour ce cas d'utilisation était en conjonction avec Fiddler.

Paramètres de Chrome (la console de développement doit rester ouverte)

enter image description here

et Fiddler :

enter image description here

Ce n'est pas bon pour le problème de l'OP - mais je suppose que la plupart des gens ne sont pas en train de trouver cette question à cause du même problème.

-1voto

Alex Bacart Points 11

Chrome ajoute Cache-control: max-age=0 lorsque vous utilisez un certificat auto-signé. Le passage de HTTPS à HTTP supprimera cet en-tête.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X