Asp.net 缓存视图状态?

Asp.net 缓存视图状态?,asp.net,caching,viewstate,Asp.net,Caching,Viewstate,这是一个好主意,但它是为SharePoint实现的。想知道是否有一个解决方案用于常规asp.net页面,它也可以缓存ViewState 其实很简单!您只需覆盖页面上的这两个方法: SavePageStateToPersistentMedium() LoadPageStateFromPersistenceMedium() 在那里,您可以获取ViewState对象树,按照您的意愿对其进行序列化,并将其存储在您想要的任何位置(会话、SQL等),而不是将整个序列化的blob返回到浏览器,只需返回一个


这是一个好主意,但它是为SharePoint实现的。想知道是否有一个解决方案用于常规asp.net页面,它也可以缓存ViewState

其实很简单!您只需覆盖页面上的这两个方法:

SavePageStateToPersistentMedium()

LoadPageStateFromPersistenceMedium()
在那里,您可以获取ViewState对象树,按照您的意愿对其进行序列化,并将其存储在您想要的任何位置(会话、SQL等),而不是将整个序列化的blob返回到浏览器,只需返回一个唯一的ID,您就可以使用它下次再次查找


这里详细介绍了这个想法:

通过在

asp.net System.Web.UI.Page:

SavePageStateToPersistentMedium()

LoadPageStateFromPersistenceMedium()
在第一种方法中,您需要检查ViewState是否已存在于缓存中,如果未将其保存在缓存中,则在第二种方法中,您可以检索它(如果已存在)


您可以将SessionID和pageName连接起来作为缓存viewStateKey的键。

这相当棘手。如果您的服务器很忙(因此有许多用户的页面视图状态正在缓存),并且您的视图状态缓存在您发回表单之前过期,您会怎么做?@Robert请使用不会过期的缓存或持久性介质。