2010-08-10 94 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的关键字。