1

我有一个需要输出缓存的 ASP.NET 应用程序。当从 Web 服务返回的数据发生更改时,我需要使缓存项无效,因此简单的持续时间是不够的。

我一直在阅读有关缓存依赖项的内容,并认为我的想法是正确的。看起来我需要为我的 Web 服务创建一个缓存依赖项。

要将页面输出与此依赖项相关联,我认为我应该使用以下方法:

Response.AddCacheItemDependency(cacheKey);

我正在努力解决的问题是我应该将什么添加到缓存中?

我的页面依赖于 Web 服务返回的单个值。我目前的想法是我应该通过子类化 CacheDependency 创建一个自定义缓存依赖项,并将当前值存储在缓存中。然后我可以使用 Response.AddCacheItemDependency 来形成依赖关系。

然后我可以定期检查值和 NotifyDependencyChange 以使我缓存的 HTTP 响应无效。

问题是,我需要确保立即刷新缓存,因此定期检查还不够好。如何确保在从缓存中获取 HTTP 响应之前重新评估缓存中代表 Web 服务返回值的依赖对象?

问候,科林 E。

4

2 回答 2

0

我相信您在缓存依赖方面处于正确的轨道上。但是,如果你不“定期检查”Web 服务的返回值,你怎么知道它什么时候返回一个新值呢?您可能需要在另一个方向上设置 Web 服务,以便当其他系统中的值发生更改时,它可以调用您的系统并使旧缓存无效并保留新值。

于 2010-01-13T16:41:54.170 回答
0

您可以使用以下方法手动使缓存页面无效:

System.Web.HttpResponse.RemoveOutputCacheItem(path)
于 2010-01-13T16:46:14.113 回答