¿Cómo configurar la caché de contenido estático por carpeta y extensión en IIS7?


Me gustaría configurar reglas en IIS7 para el almacenamiento en caché de contenido estático en mi ASP.NET sitio web.

He visto estos artículos, que detallan cómo hacerlo usando el elemento <clientCache /> en web.config:

Caché de cliente <clientCache> (IIS.NET)
Agregar encabezado de control de Caché o Caduca al contenido estático en IIS (Stack Overflow)

Sin embargo, esta configuración parece aplicarse globalmente a todo el contenido estático. ¿Hay una manera de hacer esto solo para ciertos directorios o las extensiones?

Por ejemplo, puedo tener dos directorios que necesitan configuraciones de caché separadas:

/static/images
/content/pdfs

¿Es posible configurar reglas para enviar encabezados de caché(max-age, expires, etc) basado en extensiones y rutas de carpeta?

Tenga en cuenta que debo poder hacer esto a través de web.config porque no tengo acceso a la consola de IIS.

Author: Community, 2010-02-03

3 answers

Puede establecer encabezados de caché específicos para una carpeta completa en su raíz 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>

O puede especificarlos en un archivo web.config en la carpeta de contenido:

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

No soy consciente de un mecanismo integrado para apuntar a tipos de archivos específicos.

 207
Author: Kev,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-12-21 17:55:09

Puede hacerlo por archivo. Utilice el atributo path para incluir el nombre de archivo

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <location path="YourFileNameHere.xml">
        <system.webServer>
            <staticContent>
                <clientCache cacheControlMode="DisableCache" />
            </staticContent>
        </system.webServer>
    </location>
</configuration>
 64
Author: Jeff Cuscutis,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-01-27 20:13:39

Tuve el mismo problema.Para mí, el problema era cómo configurar un límite de caché para las imágenes.Y me encontré con este sitio que dio algunas ideas para el procedimiento sobre cómo se puede manejar el problema.Espero que sea útil para usted también Enlace:[https://varvy.com/pagespeed/cache-control.html]

 -1
Author: Vikum Charuka Egodapitiya,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-11-29 06:41:43