2010-08-10 101 views
6

ViewState Caching緩存視圖狀態?

這是一個好主意,但是它是爲SharePoint實施的。不知道是否有一個常規的asp.net頁面的解決方案,它可以同樣緩存視圖狀態。

+0

這很棘手。如果您的服務器非常繁忙(因此有許多用戶的頁面瀏覽狀態被緩存),並且您的視圖狀態緩存在您回覆表單之前過期,您會怎麼做? – 2010-08-10 15:26:09

+0

@Robert只是使用一個不會過期的緩存或持久性介質。 – 2010-08-10 15:27:14

回答

8

其實很簡單!你只需要重寫網頁上的這兩種方法:

SavePageStateToPersistentMedium() 

LoadPageStateFromPersistenceMedium() 

在那裏,你可以得到的ViewState對象樹,但是序列化它,你想和保存它,無論你想(會議,SQL等),和而不是將整個序列化的blob返回給瀏覽器,只需返回一個唯一的ID,您可以在下次使用時再次查看它。

的想法是覆蓋在艱苦這裏詳細:http://msdn.microsoft.com/en-us/library/ms972976.aspx

0

這是很可能通過重寫以下兩種方法

asp.net System.Web.UI.Page: 

SavePageStateToPersistentMedium() 

LoadPageStateFromPersistenceMedium() 

雖然在第一種方法,你需要檢查的ViewState已經存在在緩存中,如果沒有保存,則在第二種方法中,如果它已經存在,則可以檢索它。

您可以連接SessionID和pageName作爲緩存viewStateKey的關鍵字。