2009-08-03 47 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表單時)。很容易忘記這一點,有時候,當你陷入緩存框架等等。當然,我很欣賞這在許多情況下可能不適合或最佳實踐。

相關問題