Pregunta

¿Es posible borrar el caché de salida de una aplicación web asp.net desde dentro de otra aplicación web asp.net?

La razón es ... Tenemos varias aplicaciones wep estructuradas como ...

Las páginas en / area1 / y / area2 / se almacenan en caché y se administran a través de / intranet / cms /. Cuando se edita una página usando / intranet / cms / quiero borrarla de la caché en la aplicación / area # / apropiada.

Ya intenté usar un VaryByCustom que busca un guid almacenado en el HttpContext.Cache pero parece estar almacenado en caché por aplicación web, eso no funciona.

Realmente, si hubiera alguna forma de pasar datos entre aplicaciones web en un solo servidor, eso resolvería mi problema, ya que puedo usar eso + VaryByCustom.

¡Gracias!

-Mike Thomas

¿Fue útil?

Solución

La forma en que he hecho esto en el pasado es tener un "oculto" página (en cada uno de los sitios / areaX ) que realiza el vaciado, recarga, etc. La página valida un parámetro de consulta secreto compartido antes de hacer nada (para evitar ataques DoS). Si es válida, la página generará un " OK " mensaje una vez que se completa la operación; genera un error 404 si el secreto no es válido.

Si desea que el vaciado sea por elemento o por grupo, agregue un segundo parámetro que identifique ese elemento / grupo.

Este método también es independiente de la tecnología del servidor, y puede ser activado por otras herramientas de administración si es necesario.

Otros consejos

Una forma en que sé hacer esto es mediante el uso de un recurso compartido como dependencia, generalmente un archivo. Cuando se cambia el archivo, el caché se borra. Creo que puede usar HttpResponse.AddFileDependency para esto.

Sin embargo, en estos casos, generalmente es mejor usar una memoria caché fuera de proceso como memcached . No lo he probado yo mismo, pero este enlace trata sobre el uso de memcached con OutputCache.

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