web-dev-qa-db-fra.com

Comment configurer le cache de contenu statique par dossier et extension dans IIS7?

Je souhaite configurer des règles dans IIS7 pour la mise en cache de contenu statique sur mon site Web ASP.NET.

J'ai vu ces articles, qui expliquent comment le faire en utilisant le <clientCache /> élément dans web.config:

Cache client <clientCache> (IIS.NET)
Ajouter l'en-tête Expires ou Cache Control au contenu statique de IIS (débordement de pile)

Toutefois, ce paramètre semble s’appliquer globalement à tout contenu statique. Existe-t-il un moyen de le faire uniquement pour certains répertoires ou extensions?

Par exemple, deux répertoires peuvent nécessiter des paramètres de cache distincts:

/static/images
/content/pdfs

Est-il possible de définir des règles pour l'envoi d'en-têtes de cache (max-age, expires, etc.) en fonction des extensions et des chemins de dossier?

Veuillez noter que je dois pouvoir le faire via web.config _ parce que je n’ai pas accès à la console IIS.

140
frankadelic

Vous pouvez définir des en-têtes de cache spécifiques pour tout un dossier dans votre racine web.config:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <!-- Note the use of the 'location' tag to specify which 
       folder this applies to-->
  <location path="images">
    <system.webServer>
      <staticContent>
        <clientCache cacheControlMode="UseMaxAge" cacheControlMaxAge="00:00:15" />
      </staticContent>
    </system.webServer>
  </location>
</configuration>

Ou vous pouvez les spécifier dans un web.config fichier dans le dossier de contenu:

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

Je ne suis pas au courant d'un mécanisme intégré pour cibler des types de fichiers spécifiques.

213
Kev

Vous pouvez le faire fichier par fichier. Utilisez l'attribut path pour inclure le nom de fichier

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <location path="YourFileNameHere.xml">
        <system.webServer>
            <staticContent>
                <clientCache cacheControlMode="DisableCache" />
            </staticContent>
        </system.webServer>
    </location>
</configuration>
66
Jeff Cuscutis