我正在使用母版頁,其中菜單根據代碼中的用戶角色動態生成。所有應用程序都使用相同的菜單註銷特定用戶。因此,不需要重新創建它,我需要爲所有應用程序提供相同的菜單。菜單在StringBuilder中,它的大小非常大。爲什麼會話或數據緩存更好,內存消耗更少?請建議?我可以使用什麼會話或緩存
我想提高母版頁的性能。
感謝
我正在使用母版頁,其中菜單根據代碼中的用戶角色動態生成。所有應用程序都使用相同的菜單註銷特定用戶。因此,不需要重新創建它,我需要爲所有應用程序提供相同的菜單。菜單在StringBuilder中,它的大小非常大。爲什麼會話或數據緩存更好,內存消耗更少?請建議?我可以使用什麼會話或緩存
我想提高母版頁的性能。
感謝
我想緩存會更好,因爲你將有一個角色只有一個實例創建,但會議將使它創建多個實例多達用戶訪問,你將不得不等待會話超時有時以釋放內存
如果每個用戶都將獲得相同的菜單:
你應該考慮把它在應用程序「高速緩存」 - 應用[「的MyMenu」]或在一個靜態字段的對象。
這個的主要原因是終身。如果將它放在應用程序級別的對象中,則它將持續應用程序的生命週期。把它放在會話級別的對象中會導致它在會話結束時丟失 - 因爲會話是按用戶啓動的,那麼你很快就會發現自己正在回憶數據。
在另一方面......如果它的每個用戶的獨特之處:
會議提供了一個方便的地方來存放這些數據,因爲它是唯一的用戶,並且將活不長了以後該用戶離開該網站。
想想也是:
如果你真的覺得記憶將是一個問題,或者你想定義你究竟有多長保持爲
把它放在高速緩存。您可以確定其在緩存中的時間量,此外,緩存將在內存不足時開始轉儲對象 - 因此它比其他選項更加敏感。
還有就是Session vs Cache on SO already
此外
商量好了你確定你的菜單是大嗎?如果是這樣,你可能需要考慮其他選擇 - 你說話有多大?
supose我有4個角色。這意味着只有4菜單被緩存在內存中,並根據用戶角色用戶使用這些菜單我對不對? – Areeb 2012-03-01 13:32:40
是的,或者你可以把它放到應用程序狀態中,因爲你不需要刷新它們,所以緩存是假設存儲需要刷新的數據,你的web服務器可能會在高負載下丟棄緩存對象,但是應用程序狀態可以永久保存,請查看:http://msdn.microsoft.com/en-us/library/94xkskdf。ASPX – 2012-03-01 13:47:03