web-dev-qa-db-fra.com

Comment puis-je empêcher Chrome d'envoyer à Cache-control: max-age = 0 lorsque je clique sur Entrée?

Je suis sur un connexion légèrement floconneuse et j'essaie d'améliorer mon expérience de navigation avec l'utilisation d'un proxy local. Selon mes recherches , cependant, si je clique sur 'entrée' dans mon navigateur sur une URL existante, un en-tête Cache-Control: max-age=0 est envoyé au proxy, qui à son tour effectue un aller-retour vers le serveur pour revalider le contenu.

Je ne le veux pas particulièrement; si l'objet est périmé, le cache le récupérera, mais s'il n'est pas périmé, je ne vois pas pourquoi j'aimerais que l'objet soit à nouveau validé à chaque fois. Si je soupçonne que la page est vieille, j'ai shift-F5 et je n'ai pas peur de l'utiliser.

Alors, y a-t-il un réglage dans les coulisses de Chrome qui puisse mettre un terme à ce comportement agaçant?

24
womble

J'ai constaté que, si vous accédez à une page via votre bouton Précédent ou un lien, Chrome n'envoie pas l'en-tête max-age = 0 et utilisera généralement (si le serveur Apache de l'autre côté est configuré pour la mise en cache). version en cache de la page.

Cependant, lorsque vous entrez l'URL (par exemple, www.example.com/abcd/index.html) directement dans la barre d'adresse, puis appuyez sur Return, Chrome enverra toujours l'en-tête Cache-Control: max-age=0, qui contourne la mise en cache.

22
Svenny

Il est possible de modifier les en-têtes que Chrome envoie à un serveur Web à l'aide de scripts utilisateur (ala greasemonkey) ou d'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 domaine pour empêcher les en-têtes d'être envoyés à des sites Web spécifiques. Vous devrez peut-être activer certaines expériences dans chrome: // flags pour ce travail.

demo of adding headers

5
Jeremy W

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 tels que

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ù BaseAuthenticator ajoute ces en-têtes de réponse lorsque la variable disableProxyCaching est vraie. Si vous rencontrez un problème similaire, vous pouvez visiter ceci lien pour la solution.

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

1