【问题标题】:Delete HttpRuntime.Cache items from an other application从其他应用程序中删除 HttpRuntime.Cache 项
【发布时间】:2011-09-28 06:41:03
【问题描述】:

我有一个管理应用程序,可以在其中操作数据库中的对象,还有一个公共 asp.net mvc 应用程序,主要用于查看这些对象。

我已经为一些对象实现了一个简单的缓存,它使用了 HttpRuntime.Cache。

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

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

但是使用使用缓存依赖的缓存不是更好吗?我不知道哪个最好用以及如何使用。我正在考虑一个 sql 依赖项,但由于我正在缓存以跳过 sql 查询,所以我不确定这会很快。

检查 sql 缓存依赖关系很慢吗?我希望在很多情况下使用缓存的对象,每次检查 sql 依赖项听起来都不好。

【问题讨论】:

  • 两个独立的 ASP.NET 应用程序吗?
  • 一个是silverlight应用,另一个是asp.net应用。

标签: asp.net-mvc-3 caching sqlcachedependency


【解决方案1】:

您可以为此使用 CacheDependency。

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

当您从应用程序中触摸特定文件(可能只是一个空文件)时。其他依赖同一个文件的应用缓存项会自动过期。

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 实际上我通过在 delete 方法上使用两个实现来解决它:如果缓存是本地的,则删除 HttpRuntime 缓存,以及调用远程控制器操作以删除远程应用程序上的缓存元素。也可能有一个 sql 依赖实现,但我仍然不确定这在性能方面是否是个好主意。
    猜你喜欢
    • 2012-07-22
    • 1970-01-01
    • 2012-08-08
    • 1970-01-01
    • 2013-06-23
    • 2019-02-05
    • 1970-01-01
    • 1970-01-01
    • 2023-03-07
    相关资源
    最近更新 更多