2009-08-03 68 views
9

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

  1. 缓存一切都在UI层
  2. 创建UI和BL之间的缓存层(不知道是怎么可行?)

我也听说了即将推出的速度缓存框架,但我想这可能是一个矫枉过正的(因为我的应用程序不会需要一个网络农场/集群)。

我的方法可能会非常糟糕,所以我欢迎任何关于如何在我的Web项目中缓存数据的建议或替代方法。

回答

10

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

+0

我喜欢你的博客上的例子,很好的使用接口。 – Rutger 2009-08-03 21:11:16

+0

我们做了同样的事情,实际上已经完成了从ASP.Net缓存到memcache的迁移。 ASP.Net中的Cache层如何不是本地可插入的,这对我来说是个谜。 – jro 2009-08-13 22:32:08

1

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

相关问题