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
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.
Supprimer l'en-tête etag
Utilisez l'en-tête Cache-Control pour avoir une valeur max-age importante
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.
Avez-vous activé la compression de contenu statique dans IIS?
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é.
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).