c# - framework - Caducidad de.Net Cache
memory cache.net framework (1)
En mi proyecto, utilizamos servicios web para obtener datos de la base de datos y completar los datos de los servicios web en la memoria caché. Estoy usando la expiración absoluta, y la duración se establece en 4 horas. Entonces, después de 4 horas, el caché expira y, por lo tanto, se llama al servicio web para volver a llenar los datos en el caché.
El problema que está sucediendo ahora es:
A veces hay un problema al establecer una conexión entre los servicios web y la base de datos, y por lo tanto, los servicios web no devuelven datos.
En este caso, la memoria caché se rellena con valores nulos para todos los campos y hasta 4 horas de caché (hasta el momento en que caduque nuevamente) no se rellena.
Estoy buscando 2 tipos de soluciones: 1) podríamos renovar el caché antes de que caduque, luego llamar al servicio web. Si el servicio web recupera datos, sobrescriba el caché. 2) el caché nunca caduca y de vez en cuando generamos un hilo que actualiza el caché si recuperamos los datos.
Pero no estoy seguro de cómo implementar las soluciones anteriores? ¿Alguien puede darme una idea de la parte técnica? ¡Gracias por la ayuda!
MI código actual de memoria caché de relleno:
ctx.Cache.Insert("cachename", cacheValue, null,
DateTime.Now.AddHours(Int32.Parse(siteViewModel.ApplicationSettings["CacheDurationHours"])), System.Web.Caching.Cache.NoSlidingExpiration,
System.Web.Caching.CacheItemPriority.Default,
null
);
En lugar de pasar nulo, implemente CacheItemRemovedCallback como el último parámetro en Cache.Insert (...) . Al recuperar el valor para volver a llenar el caché, puede hacer una comprobación nula y usar el valor anterior por el momento.