Demander aux navigateurs de mettre en cache nos images (ASP.NET/IIS)

j'ai juste couru Google Page Speed application contre notre site et l'une des recommandations était de utiliser la mise en cache du navigateur. Cette extension a révélé ce qui suit:

les Ressources exploitables suivantes ont une courte durée de fraîcheur: Préciser une date d'expiration d'au moins une semaine l'avenir pour les ressources suivantes:

<une longue liste d'images >

<certains les fichiers javascript >

Comment prolonger la durée de "fraîcheur" de certaines images?

ASP.NET projet en cours d'exécution sur IIS7.5

19
demandé sur madth3 2010-06-10 22:28:04

3 réponses

j'ai trouvé la réponse à ma question ailleurs sur ce site. Woot! (Je ne sais pas pourquoi il n'apparaît pas quand j'ai posté, mais jamais l'esprit, je suis arrivé à la fin.)

pour les personnes intéressées, la réponse était ceci (comme posté par Gabriel McAdams):


vous faites cela dans IIS. Si vous utilisez IIS 7, vous pouvez ajouter l'en-tête dans votre web.config. C'est dans le système.le serveur web de la section.

<staticContent>
    <clientCache httpExpires="Sun, 29 Mar 2020 00:00:00 GMT" cacheControlMode="UseExpires" />
</staticContent>

cela va causer tout le contenu statique pour avoir un en-tête HTTP expires défini à l'année 2020. Contenu statique signifie Tout ce qui n'est pas servi par le ASP.NET moteur tel que des images, des dossiers de script et des feuilles de styles.

Ou relatif à l'expiration, utilisez ceci:

<staticContent>
    <clientCache cacheControlMaxAge ="2.00:00:00" cacheControlMode="UseMaxAge" />
</staticContent>

cela va faire en sorte que tous les contenus statiques aient un en-tête HTTP expires défini à 2 jours.

49
répondu Chuck Le Butt 2017-05-23 12:17:33

vous devrez ajouter L'en-tête Expires à votre contenu statique incluant les images, html, js, fichiers css. Vous pouvez facilement ajouter l'en-tête expires dans votre web.config system.webServer section à l'aide de IIS7:

<staticContent>
    <clientCache httpExpires="Mon, 1 May 2020 05:00:00 GMT" cacheControlMode="UseExpires" />
</staticContent>
4
répondu sushil bharwani 2015-11-05 10:17:29

ce que vous voulez généralement est de mettre en cache tous les actifs( css, js et images), le fichier html aura çache busting liens pour que vous puissiez toujours mettre à jour les images.

pour que cela fonctionne, les fichiers html ne peuvent pas faire partie de staticContent. l'ajout d'un nouveau gestionnaire pour les fichiers html empêche leur mise en cache permanente.

    <staticContent>
        <clientCache httpExpires="Sun, 29 Mar 2020 00:00:00 GMT" cacheControlMode="UseExpires" />
    </staticContent>
    <handlers>
      <add
        name="HtmlHandler"
        path="*.html"
        verb="*"
        type="System.Web.Handlers"
        preCondition="integratedMode"
      />
    </handlers>
1
répondu Miss.Vy 2015-11-15 10:50:38