【问题标题】:Should I use HttpRuntime.Cache?我应该使用 HttpRuntime.Cache 吗?
【发布时间】:2011-12-26 21:44:53
【问题描述】:

我是asp.net的初学者,有几个关于缓存的问题:

  1. HttpRuntime.Cache 只提供了几个方法,我想我可以自己用 Dictionary 实现这些方法。
  2. 如果 HttpRuntime.Cache 比 Dictionary 好很多,为什么有些人想实现自己的缓存框架。
  3. MS Enterprise Cache Block 怎么样?

【问题讨论】:

    标签: c# caching httpruntime.cache


    【解决方案1】:

    HttpRuntime.Cache 只提供几个方法,我想我可以 自己用 Dictionary 实现这些方法。

    你想错了。 HttpRuntime.Cache 不仅仅是一个简单的字典。它提供线程安全和缓存过期策略。它提供了使用自定义实现的可能性,并从分布式缓存中受益,这对网络农场很有帮助。用字典来实现这一点可能是你可能不想冒险的大量工作,因为你基本上是在重新发明轮子,即使重新发明轮子不会打扰你,做对的机会也很渺茫。

    2)如果HttpRuntime.Cache比Dictionary好很多,为什么有些人 想实现自己的缓存框架。

    人们不想这样做。

    3) MS Enterprise Cache Block 怎么样?

    这是重型火炮,当您需要简单的缓存时并不总是必要的,这可以通过框架已经为您提供的开箱即用的功能来实现。

    备注:在 .NET 4.0 中,您应该使用新的 System.Runtime.Caching 命名空间而不是 HttpRuntime.Cache

    所以回答你的问题:Should I use HttpRuntime.Cache

    是的,除非您使用的是 .NET 4.0,在这种情况下您应该使用来自新的 System.Runtime.Caching 命名空间的类。

    【讨论】:

    • 感谢您的精彩回答。我还有一个问题:我看到有人在像 Console 这样的非 Web 应用程序中使用 HttpRuntime.Cache,我觉得这有点奇怪。你见过吗?
    • @Domi.Zhang,是的,我已经看到了。它可以工作,但需要依赖 System.Web 程序集。这就是微软决定将缓存外部化到 .NET 4.0 中的单独程序集的原因。
    • Darin,如果我想要 Httpruntime 缓存中的过期时间怎么办?我在 System.Runtime.Caching 中找不到它
    • @RoyiNamir,.Add() 方法允许您通过CacheItemPolicy 来控制各种选项。
    • 更新 HttpRuntime.Cache 的“控制台应用程序使用”是 msdn 文档here 中的一个注释警告:“Cache 类不打算在 ASP.NET 应用程序之外使用。它的设计和经测试可在 ASP.NET 中为 Web 应用程序提供缓存。对于其他类型的应用程序,例如控制台应用程序或 Windows 窗体应用程序,请使用 ObjectCache 类。"
    猜你喜欢
    • 2011-03-30
    • 2010-09-14
    • 2021-12-10
    • 2010-12-25
    • 2014-05-27
    • 2010-12-25
    • 2018-09-11
    • 2012-07-02
    • 2017-04-21
    相关资源
    最近更新 更多