Tengo una pregunta relacionada con las técnicas de invalidación de caché ... Estoy tratando de implementar un mecanismo para mi sitio web, que invalida automáticamente el caché del navegador (css, imágenes ...). Quiero poder invalidar programáticamente la memoria caché del navegador cada vez que actualizo el sitio web (cambio de imágenes o estilos);ASP.NET - Invalidar el caché del navegador
Por ejemplo: para el lanzamiento actual, entre otros, el CSS y algunas de las imágenes han cambiado. En esta situación, quiero que una vez finalizada la actualización, cuando un usuario realiza una solicitud al sitio web, la memoria caché de su navegador se invalide automáticamente, forzando así la nueva descarga de las nuevas imágenes y estilos. Esto debe hacerse solo para la primera solicitud del cliente ... los siguientes deben recuperarse de la memoria caché (por lo que establecer el pragma sin caché está descartado).
Esto es lo que he intentado: en el controlador de eventos BeginRequest, he añadido las siguientes líneas: Response.Cache.SetCacheability (HttpCacheability.ServerAndPrivate); Response.Cache.SetETag ("\" e111293b17594f1487d136ea7e9314ac \ "");
esto configura el ETag en los encabezados de respuesta. Pensé que si cambio este ETag en cada lanzamiento y lo configuro en cada solicitud, el caché será invalidado, pero parece que no lo es. Utilicé los encabezados HTTP en vivo para ver los resultados y ETAG está configurado correctamente para la respuesta, pero el CSS y las imágenes todavía se toman de la memoria caché ...
Cualquier idea de cómo podría lograr esto, o si se puede lograr en absoluto?
¡Gracias de antemano!
que es una buena idea, pero ¿qué pasa con las imágenes ... no es tan fácil colocar un param de consulta para cada imagen de referencia en el proyecto ... gracias por la respuesta – GeoXYZ
Esto debería funcionar para las imágenes. Quizás si todas sus imágenes son controles de servidor, podría anular un evento de página, tal vez onrender, y encontrar todas las imágenes y anexar el parámetro url extra – Bob
sí, sé que podría hacerlo, pero no es una buena práctica ... primero de todos, creo que tendría que hacer esto en todas las páginas con imágenes en ellos (porque no solo la página maestra tiene imágenes, sino que los controles del usuario también tienen imágenes); en segundo lugar, para automatizar este proceso (no tener que adaptar el código cada vez que agregue otro control de imagen en la página), tendría que repetir los controles de página y buscar solo controles de imagen y modificar la propiedad imageurl .. .y esto consume mucho tiempo, especialmente si el recuento de golpes para ese control es alto, lo que induce un golpe de rendimiento. – GeoXYZ