【问题标题】:Access ASP.Net cache for outside webapp?访问外部 webapp 的 ASP.Net 缓存?
【发布时间】:2011-09-05 13:09:14
【问题描述】:

我正在通过将常用数据库对象存储在缓存中来优化 ASP.NET 站点,我想知道管理缓存的好工具是什么?

我发现http://aspalliance.com/cachemanager/ 看起来很酷,但是很旧?我还必须在 webapp 本身中安装它。我更喜欢外部工具?还有什么?

(我还发现了 Visual Studio 2005 加载项“Cache Visualizer”,但下载页面 http://blog.bretts.net 已损坏?)

有没有办法从运行在同一台服务器上的其他 webapp 访问一个 webapps 的缓存?

例如,我的缓存中的一个典型对象是“用户类型”(个人、公司、学生等),它几乎是静态数据。但每年一次,我可能会更新此表并添加一个值。这是在我们的管理应用程序中完成的。管理员应用程序有什么方法可以访问和使公共应用程序中的“用户类型”缓存无效? (无需重新启动整个应用程序)。

我查看了 SqlCacheDependency,但在这种情况下这对我们不起作用。

【问题讨论】:

  • 无论如何,每次 appdomain 重新加载时都会刷新 asp.net 缓存,我不会担心每年更新一次,这可能每隔几个小时左右就会刷新一次。您不必使用 CacheDependency 类来使缓存过期,您只需设置过期日期/时间。
  • 即使 appdomain 重新加载(取决于您的 apppool 设置),它仍然意味着您的数据不正确,直到它重新加载。更新时数据的正确性有多重要?你可以为它付出一生。另外,您能否在您的问题中澄清一下是只有一台前端机器还是集群中有很多?
  • @bryanmac:我们目前在一台机器上运行。
  • 如果您正在运行一台机器,您可以提供更改数据的方法。然后它变成一个通过缓存写入的方法,该方法更新数据库并更新缓存。当您在缓存不一致的集群中获得许多机器时,就会出现问题。此时,您需要轮询来更新缓存

标签: c# asp.net caching


【解决方案1】:

缓存是特定于 AppDomain 的,因此如果您有多个 Web 应用程序,则两者都无法访问另一个的缓存。

您可能想要研究外部缓存安排,例如 Memcached、redis 甚至可能是 ASP.NET 状态服务器。

【讨论】:

  • 是否可以构建一个“WinForms 应用程序”,安装在可以访问 AppDomain 的服务器上?
【解决方案2】:

您仍然可以使用 Internet Wayback 机器找到 brett 可视化器的下载。

http://web.archive.org/web/20060512123557/http://blog.bretts.net/wp-content/uploads/2006/03/Johnson.Visualizers.zip

【讨论】:

    猜你喜欢
    • 2021-01-14
    • 1970-01-01
    • 2011-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多