c# - cache - microsoft caching
Encabezados de control de caché en ASP.NET (2)
Es posible que también desee agregar esta línea si está configurando la edad máxima tan lejos:
// Summary:
// Sets Cache-Control: public to specify that the response is cacheable
// by clients and shared (proxy) caches.
Response.Cache.SetCacheability(HttpCacheability.Public);
Hago mucha manipulación del encabezado de respuesta con documentos e imágenes de un manejador de archivos que procesa las solicitudes de archivos que se guardan en el DB.
Dependiendo de su objetivo, realmente puede forzar a los navegadores el caché de casi toda su página durante días a nivel local (si eso es lo que quiere / necesita).
editar:
También creo que podrías estar equivocando la edad máxima ...
Response.Cache.SetMaxAge(new TimeSpan(dt.Ticks - DateTime.Now.Ticks ));
este conjunto de líneas es a 30 minutos de tiempo de caché en el navegador local [max-age = 1800]
En cuanto a las líneas de control de caché 2x ... es posible que desee comprobar si IIS se ha configurado para agregar el encabezado automáticamente.
Estoy tratando de configurar los encabezados de control de caché para una aplicación web (y parece que puedo hacerlo), pero obtengo lo que creo que son entradas impares en las respuestas del encabezado. Mi implementación es la siguiente:
protected override void OnLoad(EventArgs e)
{
// Set Cacheability...
DateTime dt = DateTime.Now.AddMinutes(30);
Response.Cache.SetExpires(dt);
Response.Cache.SetMaxAge(new TimeSpan(dt.ToFileTime()));
// Complete OnLoad...
base.OnLoad(e);
}
Y esto es lo que muestran las respuestas del encabezado:
-----
GET /Pages/Login.aspx HTTP/1.1
Host: localhost:1974
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.10) Gecko/2009042316 Firefox/3.0.10 (.NET CLR 3.5.30729)
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
X-lori-time-1: 1244048076221
Cache-Control: max-age=0
HTTP/1.x 200 OK
Server: ASP.NET Development Server/8.0.0.0
Date: Wed, 03 Jun 2009 16:54:36 GMT
X-AspNet-Version: 2.0.50727
Content-Encoding: gzip
Cache-Control: private, max-age=31536000
Expires: Wed, 03 Jun 2009 17:24:36 GMT
Content-Type: text/html; charset=utf-8
Content-Length: 6385
Connection: Close
-----
- ¿Por qué la propiedad "Cache-Control" aparece dos veces?
- ¿Necesito las propiedades "Cache-Control" y "Expira"?
- ¿Es "Page_Load" el mejor lugar para poner este código?
¡Gracias!
No veo que el control de caché aparezca dos veces. Uno está en la solicitud, uno está en la respuesta. El que está en la solicitud probablemente sea porque presionas Shift + F5 en el navegador o algo similar.
A su segunda pregunta: eso depende de lo que quiere lograr con los encabezados de la caché.
No sé lo que quería lograr con la edad máxima. El valor es demasiado alto ya que convirtió el DateTime incorrectamente en un TimeSpan. ¿Por qué no usas TimeSpan.FromMinutes en su lugar?
La carga de la página está bien. Usualmente juego con encabezados HTTP allí.