4
在我的项目中,我们使用Web服务从数据库获取数据并将数据从Web服务填充到缓存。 我正在使用绝对过期,并且持续时间设置为4小时。 因此,4小时后,缓存过期,因此调用Web服务以重新填充缓存中的数据。.Net缓存过期
现在发生的问题是:
有时,建立Web服务和数据库,因此,网络服务不返回数据之间的连接有问题。
在这种情况下,缓存填充所有字段的空值和长达4小时缓存(直到它再次到期),它不被重新填充。
我在寻找2种解决方案: 1)我们可以在缓存到期前更新缓存,然后调用Web服务。如果Web服务获取数据,则覆盖缓存。 2)缓存永不过期,并且每隔一段时间我们都会产生一个线程,如果我们获取数据,就会更新缓存。
但我不知道如何实现上述解决方案?有人能给我一些关于技术部分的见解吗?谢谢您的帮助!
MY填充缓存的当前代码:
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
);
我接受这是最可行的解决方案。但我在这里有一个问题:在应用程序池回收期间会发生什么? cacheitemremovedcallback会在重启过程中被触发吗?如果是的话,它会有旧的缓存值? – user1165815