2009-11-04 55 views
0

我使用的SqlProfileProvider上我的網站之一,在一個頁面上我需要獲取配置文件(它是一個企業內部網)的整個列表。從緩存中的SqlProfileProvider型材 - ProfileManager.GetAllProfiles導致

我使用的方法是ProfileManager.GetAllProfiles()。問題在於它的性能非常差,並且會大大減慢網站的速度。

因此,想到在緩存中的應用範圍,因爲數據表的方法調用的結果的(所以我可以在其上過濾/搜索以及)。

我的問題是,我有運行此web應用的幾個服務器,我想緩存是同步的。我開始使用memcached,但由於某些問題,我放棄了它(因此回到了在Application範圍中進行緩存的想法)。

所以,這裏是我的問題:

  • 難道是高效存儲包含在Application對象輪廓的數據表?或者,是否有可能將對象存儲在緩存中並讓它們可用於所有客戶端/瀏覽器?
  • 是否可以向此緩存中添加(SQL)緩存依賴項?

回答

1

您可以將網頁的cache portions取決於配置文件列表,方法是將它們放入用戶控件並將其標記爲可緩存。 SqlCacheDependency緩存策略到期也可以定義。至於緩存位置,服務器場中的每個Web服務器都會在內存中擁有自己的版本,但使用緩存過期將確保此版本與數據庫中的數據不會不同步。

頁或片段緩存是最有效的緩存技術,因爲違背了緩存模型(一個DataTable或其他)您不支付HTML渲染的價格。

+0

也許我還不夠清楚。由於數據表內容將使用大量內存,因此我需要在每個應用程序中緩存它,而不是每個會話。 我還可以使用緩存對象嗎? – Pablo 2009-11-04 21:36:12

+0

頁面或片段緩存是每個應用程序,而不是每個會話。 – 2009-11-04 21:38:27