Pregunta

¿Cuál es la mejor manera de agregar "Expira" en el encabezado http para contenido estático?p.ej.imágenes, css, js

El servidor web es IIS 6.0;el lenguaje es ASP clásico

¿Fue útil?

Solución

Podrías probar algo como esto:

@ECHO OFF 
REM ---------------------------------------------------------------------------
REM Caching - sets the caching on static files in a web site
REM syntax 
REM     Caching.CMD 1 d:\sites\MySite\WWWRoot\*.CSS
REM 
REM   %1 is the WebSite ID
REM   %2 is the path & Wildcard - for example, d:\sites\MySite\WWWRoot\*.CSS
REM   _adsutil is the path to ADSUtil.VBS
REM ---------------------------------------------------------------------------

SETLOCAL

SET _adsutil=D:\Apps\Scripts\adsutil.vbs

FOR %%i IN (%2) DO (
  ECHO Setting Caching on %%~ni%%~xi
  CSCRIPT %_adsutil% CREATE W3SVC/%1/root/%%~ni%%~xi "IIsWebFile"
  CSCRIPT %_adsutil% SET    W3SVC/%1/root/%%~ni%%~xi/HttpExpires "D, 0x69780"
  ECHO.
)

Lo que establece el valor de almacenamiento en caché para cada archivo CSS en una raíz web en 5 días, luego ejecútelo así:

Caching.CMD 1 \site\wwwroot\*.css
Caching.CMD 1 \site\wwwroot\*.js
Caching.CMD 1 \site\wwwroot\*.html
Caching.CMD 1 \site\wwwroot\*.htm
Caching.CMD 1 \site\wwwroot\*.gif
Caching.CMD 1 \site\wwwroot\*.jpg

Algo doloroso, pero viable.

Por cierto, para obtener el valor de HttpExpires, establezca el valor en la GUI y luego ejecute

AdsUtil.vbs ENUM W3SVC/1/root/File.txt

para obtener el valor real que necesita

Otros consejos

Creo que esto es lo que buscas: caducidad del contenido en encabezados HTTP en el Administrador de IIS.Utilizo el patrón de pegar contenido estático en una carpeta como ~/Resources y configurar la caducidad en esa carpeta en particular para que tenga una vida mucho más larga que el resto de la aplicación.

Aquí hay un enlace al artículo completo: IIS 6.0 F1:Propiedades del sitio web: pestaña Encabezados HTTP

Para otros que vienen de google:esta voluntad no funciona en iis6 pero funciona en 7 y superiores.

En su web.config:

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

en el administrador de IIS puede configurarlo para cada tipo de archivo o puede (para los dinámicos como aspx) hacerlo en el código.Después de configurarlo, debe verificar los encabezados que se generan con una herramienta como Mozilla Firefox + complemento de encabezados en vivo, o puede usar una herramienta basada en web como http://www.httpviewer.net/

No sé si esto es lo que estás buscando, pero evita que mis páginas se almacenen en caché.

<META HTTP-EQUIV="Pragma" CONTENT="no-cache">
<META HTTP-EQUIV="Cache-Control" CONTENT="no-store">
<META HTTP-EQUIV="Cache-Control" CONTENT="no-cache">
<META HTTP-EQUIV="Expires" CONTENT="0">
<META HTTP-EQUIV="Cache-Control" CONTENT="max-age=0">

Los obtuve de un artículo en línea del que ya no tengo una referencia.

Terrible solución, el primer comando para crear con adsutil fallará con el error -2147024713 (0x800700B7) ya que los archivos que intenta crear ya existen.

Gracias.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top