在我的项目中,我们使用 Web 服务从数据库获取数据并将数据从 Web 服务填充到缓存中。
我使用绝对过期,持续时间设置为 4 小时。
因此,在 4 小时后,缓存会过期,因此调用 Web 服务重新填充缓存中的数据。
现在出现的问题是:
有时候在 Web 服务和数据库之间建立连接存在问题,因此 Web 服务无法返回数据。
在这种情况下,缓存将用 null 值填充所有字段,并且在 4 小时的缓存期限内(直到再次过期),它不会重新填充。
我正在寻找两种解决方案: 1)我们可以在缓存过期之前更新缓存,然后调用 Web 服务。如果 Web 服务返回数据,则覆盖缓存。 2)缓存永不过期,每隔一段时间我们就生成一个线程,如果我们获得数据,则更新缓存。
但我不确定如何实施上述解决方案?谁能给我提供技术的见解?感谢帮助!
我目前用于填充缓存的代码:
现在出现的问题是:
有时候在 Web 服务和数据库之间建立连接存在问题,因此 Web 服务无法返回数据。
在这种情况下,缓存将用 null 值填充所有字段,并且在 4 小时的缓存期限内(直到再次过期),它不会重新填充。
我正在寻找两种解决方案: 1)我们可以在缓存过期之前更新缓存,然后调用 Web 服务。如果 Web 服务返回数据,则覆盖缓存。 2)缓存永不过期,每隔一段时间我们就生成一个线程,如果我们获得数据,则更新缓存。
但我不确定如何实施上述解决方案?谁能给我提供技术的见解?感谢帮助!
我目前用于填充缓存的代码:
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
);