web-dev-qa-db-fra.com

Pourquoi Firefox ne cache-t-il pas mes images et CSS?

J'utilise IIS7, j'ai déjà configuré les éléments suivants. Mais lorsque je lance Firefox, il ne semble pas mettre en cache aucune de mes images, même avec le jeu "Mémoriser l'historique".

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <system.webServer>
    <staticContent>
      <clientCache cacheControlCustom="public" cacheControlMode="UseMaxAge" cacheControlMaxAge="7.00:00:00" />
    </staticContent>
  </system.webServer>
</configuration>

Cependant, lorsque j'utilise Firebug, il pointe toujours sur Firefox et non sur la mise en cache des images et CSS:

public,max-age=604800
Content-Type    text/css
Content-Encoding    gzip
Last-Modified   Mon, 27 Jun 2011 03:53:22 GMT
Accept-Ranges   bytes
Etag    "507968c27d34cc1:0"
Vary    Accept-Encoding
Server  Microsoft-IIS/7.5
X-Powered-By    ASP.NET
Date    Mon, 27 Jun 2011 13:06:41 GMT
Content-Length  5067
Request Headersview source
Host    www.xx.com
User-Agent  Mozilla/5.0 (Windows NT 6.1; rv:2.0.1) Gecko/20100101 Firefox/4.0.1
Accept  text/css,*/*;q=0.1
Accept-Language en-us,en;q=0.5
Accept-Encoding gzip, deflate
Accept-Charset  ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive  115
Connection  keep-alive
Referer http://www.xx.com/
Cookie  __utma=62996397.135679654.1309106351.1309159743.1309164158.8; __utmz=62996397.1309106351.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); __utmc=62996397
3
Richard A

Quel est l'URI de la demande pour le fichier CSS? Firefox ne mettra pas le résultat en cache lorsque l’URI contient une chaîne de requête (c'est-à-dire un? Suivi de paramètres).

Selon les spécifications HTTP, un navigateur ne doit jamais mettre en cache la réponse d'une requête contenant une chaîne de requête, à moins que le serveur ne l'autorise explicitement. Malheureusement, Firefox et IE ne respectent pas cette règle. IE la met en cache indépendamment de la chaîne de requête, mais Firefox ne la met jamais en cache quels que soient les en-têtes de contrôle de la cache.

2
Marco Miltenburg
  1. Supprimer l'en-tête etag

  2. Utilisez l'en-tête Cache-Control pour avoir une valeur max-age importante

  3. Définir l'en-tête Expires comme une date future lointaine

Je ne sais pas comment faire cela avec IIS, mais si vous procédez comme indiqué ci-dessus, Firefox devrait mettre en cache vos images et tous les autres fichiers que vous souhaitez mettre en cache.

1
John Conde
  1. Avez-vous activé la compression de contenu statique dans IIS?

  2. Apparemment (selon cette question: https://stackoverflow.com/questions/6420995/iis-7-x-static-compression-not-frequent-hit-hit ) IIS peut décidez de ne pas compresser les fichiers s'ils sont RAREMENT accès. Je n'ai pas eu de problèmes avec ce point - même fichier fraîchement créé a bien fonctionné.

  3. Utilisez une plus grande valeur de max-age - 30 jours ou plus (bien que cela ne devrait pas affecter beaucoup la mise en cache QUE pour empêcher complètement la mise en cache du fichier).

0
LazyOne