asp.net caching outputcache

¿Cuál es el mejor método para forzar el vencimiento de la caché en ASP.NET?



caching outputcache (3)

Supongamos que tengo una aplicación ASP.NET ejecutándose en varios servidores web detrás de un equilibrador de carga:

Puedo:

  • ¿Forzar salida caché (nivel de página y / o control) para caducar globalmente?

  • Force Caché de datos (es decir, Cache.Insert) para caducar?

  • Monitorear el uso de caché de ASP.NET (claves, RAM, etc.) desde una ubicación central.

Una posible solución sería hacer que cada uso de caché verifique la dependencia de un archivo para los cambios. El archivo podría tocarse y caducaría todo el caché. Sin embargo, esto requiere que los desarrolladores incluyan la dependencia en todo su código. ¿Es una mejor solución?


Hay muchas maneras de hacer que cache este caché, como el caché de salida de página por

Page.Response.Cache.SetCacheability(HttpCacheability.NoCache)

La dependencia basada en el tiempo simplemente expira el elemento en un punto definido en el tiempo.

Response.Cache.SetExpires(DateTime.Now.AddSeconds(360)); Response.Cache.SetCacheability(HttpCacheability.Private) Response.Cache.SetSlidingExpiration(true);

Ahora, cuando se trata de monitorear el caché, a menos que haya una API en el caché que le indique, entonces no hay una forma directa.

Por supuesto, puede enumerar el caché, los pares clave-valor y luego calcular el tamaño de cada elemento almacenado. ¿No suena fácil verdad?

Así que aquí está para hacer que su monitoreo de caché sea fácil. Francamente diciendo que nunca lo usé yo mismo, pero puedes probarlo, solo el asunto de agregar un dll a tu aplicación.

Y aquí hay algo para la vista de las teclas de caché,

'' display contents of the ASP.NET Cache If Cache.Count > 0 Then cc.Append("<b>Contents of the ASP.NET Cache (" _ & Cache.Count.ToString() & " items):</b><br />") For Each item As Object In Cache cc.Append("Key:''" & item.Key & "'' Type:" _ & item.Value.GetType().ToString() & "<br />") Next Else cc.Append("<b>ASP.NET Cache is empty</b>") End If


De Tek-Tips (leer el enlace para una explicación detallada)

Response.Expires = 15 Response.ExpiresAbsolute = Now() - 2 Response.AddHeader "pragma","no-cache" Response.AddHeader "cache-control","private" Response.CacheControl = "private"