2011-07-04 54 views
1

我有一个管理应用程序,在该应用程序中我操纵数据库中的对象,以及主要用于查看这些对象的公共asp.net mvc应用程序。从其他应用程序中删除HttpRuntime.Cache项目

我对少数使用HttpRuntime.Cache的对象实现了一个简单的缓存。

我想从管理应用程序中使公共应用程序的缓存部分无效。

最简单的解决方案是创建一个ClearCache()操作,该操作在调用时清除缓存中的每条记录。

但是使用缓存依赖关系的缓存不是更好吗?我不知道哪个最好用,怎么用。我正在考虑一个SQL依赖项,但由于我正在做缓存来跳过SQL查询,我不确定这会很快。

正在检查sql缓存依赖性缓慢吗?我希望在很多情况下使用缓存对象,每次检查sql依赖性听起来不太合适。

+0

是两个单独的ASP.NET应用程序吗? –

+0

一个是silverlight应用程序,另一个是asp.net应用程序。 – SoonDead

回答

0

我推荐每个表都有SQL依赖项缓存,或者选择查询假设一起处理的记录。您可能会考虑为某些分区创建单独的缓存条目(例如,如果您有国家/地区特定数据,请将每个国家/地区的数据保存在具有适当SQL依赖关系的单独缓存条目中)。

+0

其实我通过在delete方法上使用两个实现来创建一个ICacheProvider来解决它:如果缓存是本地的,则删除HttpRuntime缓存,并调用远程控制器操作以删除远程应用程序上的缓存元素。也可能有一个sql依赖实现,但我仍然不确定这是否是一个好主意性能。 – SoonDead

1

您可以使用CacheDependency。

如果有两个单独的应用程序。您可以使用文件依赖项选项。 (还有缓存键依赖项选项)

当您从应用程序触摸特定文件(可能只是一个空文件)。依赖于相同文件的其他应用程序缓存项目将自动失效。

您可以使用不同的文件过期不同类别的缓存项目。

相关问题