我有一個Web應用程序,它將項目存儲在數據庫中。 我決定使用App Farbic緩存來加速性能。 什麼是關於下面(或我應該決定哪個標準)的最佳模式: 將每個項目分別存儲在緩存中。 或將整個列表存儲在緩存中(即一個代表項目列表的鍵)?Appfabric上的緩存模式(整個列表與單個項目)
非常感謝,
約瑟夫
我有一個Web應用程序,它將項目存儲在數據庫中。 我決定使用App Farbic緩存來加速性能。 什麼是關於下面(或我應該決定哪個標準)的最佳模式: 將每個項目分別存儲在緩存中。 或將整個列表存儲在緩存中(即一個代表項目列表的鍵)?Appfabric上的緩存模式(整個列表與單個項目)
非常感謝,
約瑟夫
這要看情況。有幾個考慮因素。 如果列表可能很大,單個緩存鍵的內容可能會變得非常大(顯然,通過啓用本地緩存可以緩解這個問題)。序列化和反序列化像這樣的大對象圖將消耗客戶端上的時間和資源。 然而,您可能想要這樣做,因爲您的應用程序可能希望在從緩存中解除序列化後,執行linq到列表中的對象查詢。
如果執行對列表中的查詢被明確定義,你可以緩存列表中的多種口味在不同的緩存鍵 - 而不是人,你可以有PeopleMale,PeopleFemale,PeopleAmerican, PeopleIrish,PeopleFrench等 如果你這樣做你可能有多個下緩存人名單出現在同一個人,你將不得不管理這個。例如,我有一個擁有雙重美國和愛爾蘭公民身份的女性。如果我編輯的人所以從女性的性別變化,使和公民更改爲荷蘭語,就必須確保四個按鍵是無效的PeopleMale,PeopleFemale,PeopleAmerican,PeopleIrish。
我上面給出的示例可能會變得棘手,無論它的價值與否都取決於您的確切用例。
在一般情況下,我建議您只使用包含相對非易失性參考數據(國家,地位類型,國籍等)的列表的緩存鍵。
希望這會有所幫助。
感謝您的詳細解答。非常感激 – 2012-01-06 17:14:06