Foros del Web » Programación para mayores de 30 ;) » .NET »

Cache de imagenes en C#

Estas en el tema de Cache de imagenes en C# en el foro de .NET en Foros del Web. Estoy desarrollando una Intranet que permite al usuario añadir una imagen a una ficha. Cuando el usuario modifica la imagen y vuelve a verla se ...
  #1 (permalink)  
Antiguo 29/03/2006, 11:13
 
Fecha de Ingreso: junio-2003
Ubicación: Granada
Mensajes: 27
Antigüedad: 21 años, 5 meses
Puntos: 1
Cache de imagenes en C#

Estoy desarrollando una Intranet que permite al usuario añadir una imagen a una ficha. Cuando el usuario modifica la imagen y vuelve a verla se sigue mostrando la imagen antigua, hasta que refresca el navegador. En Firefox se ve perfectamente pero en IE se da este fallo.

Para solucionarlo he probado varias posibilidades, incluso algunas que son de ASP.

1. Posibilidad

Código:
Response.Expires = 0;
Response.ExpiresAbsolute = DateTime.Now.AddDays(-1d);
Response.CacheControl = "no-cache";
Response.AddHeader("pragma", "no-cache");
Response.AddHeader("cache-control", "no-cache");
Incluso he probado varios parámetros en cache-control.

Código:
Response.AddHeader("cache-control", "private");
Response.AddHeader("cache-control", "no-cache, must-revalidate");
Sin resultado.

2. Usando ya opciones especificas de .NET y C#

En la cabecera declaro:
Código:
<%@ OutputCache Location="None" VaryByParam="None"%>
Y en el código:

Código:
Response.Cache.SetExpires(DateTime.Now.AddDays(-1d));
Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.Cache.SetValidUntilExpires(false);
Sin resultado.

3. Directamente he escrito en el codigo XHTML:

Código HTML:
<meta http-equiv="pragma" content="no-cache" />
<meta http-equiv="cache-control" content="no-cache" />
<meta http-equiv="expires" content="0" /> 
Sin resultado.

El usuario seguía viendo la misma imagen hasta que refrescaba la página en el navegador.

Es importante destacar que esta imagen se graba en como archivo en el servidor, si se grabase en la base de datos el problema no se da.

Finalmente la solución que hemos usado es añadir a la ruta de la imagen un parámetro con la fecha y la hora del sistema.

//servidor/web/img/el13.jpg?d=20060329190525

De esta forma la imagen se refresca siempre.

Se que es posible decirle al usuario que modifique las preferencias en su navegador (Herramientas -> Opciones de Internet -> Archivo temporales de Internet -> Configuración - Cada vez que se visita la pagina), pero no sabemos cuanto usuario van a usar la página y no queremos depender de cual va a ser el estado del navegador.

¿Alguien conoce alguna otra posibilidad?
  #2 (permalink)  
Antiguo 29/03/2006, 21:39
Avatar de RootK
Moderador
 
Fecha de Ingreso: febrero-2002
Ubicación: México D.F
Mensajes: 8.004
Antigüedad: 22 años, 9 meses
Puntos: 50
No será que estás guardando la cache de datos desde tu firewall...?? porque a veces se configuran los servers para que almacen imagenes, .js, etc, y sean las cargas mas rápidas pero suelen fallar en esos casos.. verifica que tu firewall (si lo tienes) no te guarde cache de imagenes para ese site.

Cualquier cosa por aqui andamos..

Salu2
__________________
Nadie roba nada ya que en la vida todo se paga . . .

Exentrit - Soluciones SharePoint & Net
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:46.