【问题标题】:Best practices regarding caching in ASP.NET apps有关在 ASP.NET 应用程序中进行缓存的最佳实践
【发布时间】:2009-08-03 20:22:49
【问题描述】:

我有一个关于缓存的问题。我有一个典型的 n 层 ASP.NET Web 应用程序。我做了一个自定义缓存包装器(包装 ASP.NET 缓存对象),我想知道缓存数据的最佳实践。我不想在我的业务层中使用缓存(不想在那里添加对 System.Web dll 的任何引用)。与 DAL 相同的情况。所以剩下的唯一选择是:

  1. 在 UI 层缓存所有内容
  2. 在 UI 和 BL 之间创建一个缓存层(不知道这是否可行?)

我还听说了即将推出的 Velocity 缓存框架,但我想这可能有点矫枉过正(因为我的应用不需要网络场/集群)。

我的方法可能大错特错,所以我欢迎任何关于如何在我的 Web 项目中有效缓存数据的建议或替代方法。

【问题讨论】:

    标签: c# asp.net caching


    【解决方案1】:

    您的 UI 和 BLL 之间的层将是一个服务层,这是一个缓存的好地方。使用抽象缓存管理器 (example on my blog),以便在需要时交换提供程序(ASP.NET 缓存、Velocity、memcached 等)。

    【讨论】:

    • 我喜欢你博客上的例子,界面很好用。
    • 我们做了同样的事情,实际上已经完成了从 ASP.Net 缓存到 memcache 的迁移。 ASP.Net 中的 Cache 层是如何不能原生插入的,这对我来说是个谜。
    • 你好@JohnSheehan,为什么我在你的博客上看不到你的例子,它正在重定向到 tumblr.com 的登录页面,我可以在没有登录的情况下访问你的博客,谢谢你的时间.
    • 这是我能做的最好的了(原来的博客不见了)dotnetchris.wordpress.com/2008/10/10/…
    【解决方案2】:

    有时还值得考虑缓存数据的用途是什么?如果它最终只是要在 UI 层中生成静态 HTML,而不是将这些部分包装在用户控件中并添加 @OutputCache 指令可能是最有效的方式(至少在使用 Web 表单时)。有时,当您陷入缓存框架等问题时,很容易忘记这一点。当然,我很欣赏这在许多情况下可能不合适或最佳实践。

    【讨论】:

    • 我基本上想缓存来自数据库的数据(或者简而言之,缓存我的业务对象/集合)。
    猜你喜欢
    • 2011-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-23
    • 2010-10-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多