2011-05-31 66 views
2

我想知道什麼時候應該使用會話,什麼時候應該使用緩存。性能有差異嗎?他們中的一個能更好地處理大量數據嗎?緩存是否僅用於與應用程序關聯的內容,而Session只能用於與當前會話/用戶關聯的內容? 在會話或緩存中保存從數據庫中收到的值是否更明智 - 假設我使緩存鍵唯一嗎?是否存在差異?例如。 Cache["MyKey"+UserId.ToString()]在會話或緩存中保存值 - 區別? ASP.NET

另外,一般來說,使用會話/緩存比從數據庫或Web服務檢索數據要聰明得多,還是會有更快檢索的數據限制?

回答

6

會話和高速緩存之間的某些區別:

  • 會話是每個用戶而所述高速緩存是每個應用程序
  • 可以存儲會話數據外的過程(SessionServer或SqlServer的),例如當使用網絡農場時
  • 您放入會話的內容會一直保留,直到會話終止/放棄或超時
  • 通過緩存,您可以指定在一段時間(絕對)或之後自動刪除項目他們並沒有在一段時間(滑動)
  • 您還可以使用SqlCacheDependencies有從緩存中刪除項目時,在數據庫中的一些數據變化
  • ASP.NET運行時也會自動從如果緩存中刪除的項目訪問可用內存變低

As對於性能:

  • 只要您使用InProc會話狀態,我猜會話和緩存之間不會有任何性能差異。
  • 只要您使用外部會話狀態,性能顯然會比InProc緩存低,但我沒有任何數字(取決於網絡,SQL服務器功率等)。
  • BTW:還有分佈式緩存解決方案允許擁有外部共享緩存(類似於進程外會話狀態)。
+0

另請參閱此問題:http://stackoverflow.com/questions/428634/cache-vs-session – M4N 2011-05-31 08:06:22

+0

是的,我已經看到了這個問題,不幸的是它並沒有真正進入整個表演部分。你有沒有對此有任何意見?會話Vs緩存和他們都與Db/Webservice?謝謝! – 2011-05-31 08:07:25