Habilitar CACHE para sitios web en entorno Windows con IIS

Una forma de hacer que un sitio web cargue mas rapidamente a la ves y el servidor tenga menos carga es habilitando el control de Cache sobre recursos estaticos de la web que no cambiaran con frecuencia, como por ejemplo ciertas imagenes, archivos js o hojas de estilos (siempre y cuando la web no este en fase de desarrollo).

Para hacer esto en un entorno Windows con IIS solo necesitamos agregar unas cuantas lineas al archivo web.config

<system.webServer>

<staticContent>
<clientCache cacheControlCustom=”public”
cacheControlMaxAge=”8640:00:00″ cacheControlMode=”UseMaxAge” />
<remove fileExtension=”.js” />
<mimeMap fileExtension=”.js” mimeType=”text/javascript” />
<remove fileExtension=”.css” />
<mimeMap fileExtension=”.css” mimeType=”text/css” />
</staticContent>

</system.webServer>

Ahora solo hara falta agregar todos los mimeTypes que se deseen poner en Cache.

Una herramienta interesante y gratuita de Google para comprobar que archivos podriamos poner en Cache, ademas de dar muchas otras sugerencias es Page Speed Insights se puede acceder desde aqui:

https://developers.google.com/speed/pagespeed/insights

Solo tenemos que ingresar la URL de la Web a analizar y obtendremos todas las sugerencias necesarias para optimizarla y hacerla mas rapida.

Otra herramienta gratuita es la de Yahoo, esta da otras sugerencias un tanto distintas de la anterior se llama YSlow la podras acceder desde aqui:

http://yslow.org/

Por ultimo tenemos a GTmetrix.com que no hace otra cosa que analizar la web con PageSpeed Insights y YSlow y mostrar los resultados!, una manera aun mas rapida de ver las sugerencias y analizar el tiempo de carga de nuestra web!.

Como incluir Vary: Accept-Encoding en el Header de las paginas con ASP.NET y Apache

Es posible que algunos usuarios por algun motivo no tengan habilitado la compatibilidad con datos comprimidos como por ejemplo gzip, algunos bugs en ciertos  proxies públicos pueden llevar a las versiones comprimidas de los recursos de que se sirve a los usuarios que no son compatibles con la compresión. Especificación de la Vary: Accept-Encoding cabecera indica al proxy para almacenar una versión de comprimido y sin comprimir del recurso lo que garantiza que no abran problemas con la carga de la pagina, y tambien garantiza una carga mas rapida de la pagina si se utilizan los recursos comprimidos.

Si trabajamos en un entorno Windows con IIS podemos incluirlo facilmente a travez del archivo web.config solo es necesario agregar las siguientes lineas:

<system.webServer>
<httpProtocol>
<customHeaders>
<remove name=”Vary”></remove>
<add name=”Vary” value=”Accept-Encoding”></add>
</customHeaders>
</httpProtocol>
</system.webServer>

Si se trata de un entorno Linux con Apache entones lo haremos con el archivo .htaccess incluyendo las siguientes lineas:

<IfModule mod_headers.c>
  <FilesMatch “\.(js|css|xml|gz|html)$”>
    Header append Vary: Accept-Encoding
  </FilesMatch>
</IfModule>

Con  esto ya lo tendriamos funcionando!