web-dev-qa-db-fra.com

Chrome ne met pas en cache les images / js / css

Lorsque Chrome charge mon site Web, il vérifie le serveur pour les versions mises à jour des fichiers avant de les afficher. (Images/Javascript/CSS) Il obtient un 304 du serveur parce que je ne modifie jamais le javascript externe, css ou images.

Ce que je veux, c'est afficher les images sans même vérifier le serveur.

Voici les en-têtes:

Connection:keep-alive    
Date:Tue, 03 Aug 2010 21:39:32 GMT    
ETag:"2792c73-b1-48cd0909d96ed"    
Expires:Thu, 02 Sep 2010 21:39:32 GMT    
Server:Apache/Nginx/Varnish

Comment faire pour qu'il ne vérifie pas le serveur?

57
Roger

À quoi ressemblent vos en-têtes de demande?

Chrome définira max-age: 0 sur l'en-tête Cache-Control de la demande si vous appuyez sur Entrée dans la barre d'adresse . Si vous visitez votre page à l'aide d'un lien hypertexte, elle doit utiliser le cache, comme prévu.

85
Jacob Krall

Quelque chose qui m'a aussi attiré était ... J'ai fait "désactiver le cache" dans les outils de développement. Allez comprendre.

75
Sabrina Leggett

Hou la la! J'étais confronté au même problème pendant un certain temps.

Je vais vous dire pourquoi vous faisiez face à ce problème. Vos en-têtes sont très bien. Vous recevez un 304 en raison de la façon dont vous essayez de rafraîchir la page. Il y a principalement 3 façons -

  1. Appuyez sur Entrée dans la zone d'adresse. Vous observerez chrome lit d'abord le fichier dans le cache et ne va pas du tout sur le serveur.

  2. Appuyez sur f5, cela vérifierait si le fichier est devenu périmé (c'est probablement ainsi que vous actualisez)

  3. Appuyez sur Ctrl + f5, il s'agit d'un rechargement inconditionnel de toutes les ressources statiques.

Donc, fondamentalement - vous devez appuyer sur la touche retour dans la barre d'adresse. Laissez-moi savoir si cela fonctionne.

57
tusharmath

Pour moi, c'était un certificat auto-signé:

https://code.google.com/p/chromium/issues/detail?id=110649

Dans le lien ci-dessus, le développeur Chromium a signalé le bogue: #WontFix car la règle est: "Toute erreur avec le certificat signifie que la page ne sera pas mise en cache."

Par conséquent Chrome ne met pas en cache les ressources des serveurs avec un certificat auto-signé.

28
Vanuan

Si vous voulez Chrome pour mettre en cache vos fichiers JS/CSS - le serveur devra définir un en-tête "Cache-Control". Il devrait ressembler à:

Cache-Control: max-age = 86400 (si vous souhaitez mettre en cache des ressources pendant une journée).

4
Rahul

Je crois que vous cherchez

Cache-Control: immutable

1
Ashutosh Sharma