我有一个需要输出缓存的ASP.NET应用程序。当从Web服务返回的数据发生更改时,我需要使缓存的项无效,因此简单的持续时间不够好。
我一直在阅读有关缓存依赖性的一些内容,并认为我有正确的想法。看起来我需要为我的Web服务创建缓存依赖。
要将页面输出与此依赖关系相关联,我认为我应该使用以下方法:
Response.AddCacheItemDependency(cacheKey);
我正在努力解决的问题是我应该添加到缓存中吗?
我的页面具有的依赖关系是Web服务返回的单个值。我目前的想法是我应该通过继承CacheDependency来创建自定义缓存依赖关系,并将当前值存储在缓存中。然后,我可以使用Response.AddCacheItemDependency来形成依赖项。
然后我可以定期检查值和NotifyDependencyChange,以使我的缓存HTTP响应无效。
问题是,我需要确保立即刷新缓存,因此定期检查不够好。如何在从缓存中获取HTTP响应之前,确保重新评估表示Web服务返回的值的缓存中的依赖对象?
问候,科林E.
答案 0 :(得分:0)
我相信您的缓存依赖性正在走上正轨。但是,如果您不“定期检查”Web服务的返回值,您怎么知道它何时返回新值?您可能需要在另一个方向上设置Web服务,以便当其他系统中的值发生更改时,它可以调用您的系统并使旧缓存无效并保留新值。
答案 1 :(得分:0)
您可以使用以下方式手动使缓存页面无效:
System.Web.HttpResponse.RemoveOutputCacheItem(path)