代码之家  ›  专栏  ›  技术社区  ›  Moran Helman

如何在使用linq2sql存储库的Asp.net Mvc中实现缓存策略?

  •  6
  • Moran Helman  · 技术社区  · 16 年前

    3 回复  |  直到 16 年前
        1
  •  6
  •   Odd    16 年前

    在对这两个模块进行了一些测试之后,我在代码的上下文中对缓存应用程序块进行了全面的回顾,并在博客中介绍了我的使用经验。它的使用非常简单,功能强大,足以满足我们的需要。我推荐它, my results were blogged here .

    在您的位置上,我将使用Repository模式来维护我的缓存,它对数据库数据集很有效,并且对您自己的缓存也同样有效。如果您不熟悉存储库模式, check out this post from Steven Walther. . 然而,我倾向于不同意前面的答案,只去掉你需要修改的项目,其余的则保持不变。如果您愿意,这将允许您独立于整个列表终止缓存中的项目。

        2
  •  2
  •   liggett78    16 年前

    有几种实现缓存的方法,httpcontext是最简单的一种,但不一定是最差的。看看 memcached MS Velocity ,两者都可以用作ASP.NET缓存的后端。尤其是memcached,它的工作非常出色。

    至于缓存策略:您必须决定什么最适合您。我个人会在更新/删除时从缓存中删除完整的列表,而不是试图找出实体是否在列表中,因为这需要花费大量时间,您需要考虑并发问题(锁定列表,因为有人可能会更新/删除另一个实体)。 有时就地更新实体是有意义的(如果您有一个包含所有所需数据的完整对象),有时这是浪费时间,因为由于某些状态更改,实体应该移动到其他地方(例如,当您按LastChangedDate排序时等)

        3
  •  0
  •   menelaos    12 年前

    只需使用[OutputCache(Duration=10,VaryByParam=“none”)] 在要缓存的每个操作甚至控制器上。

    http://www.asp.net/mvc/tutorials/older-versions/controllers-and-routing/improving-performance-with-output-caching-cs