页面瘦身之压缩viewState和保存viewState到服务器

项目报表页面viewState大小超过200K,页面体积很大,必须得将之瘦身,现在很流行身材苗条。。。。。 44

执行之前

先重载Page中的两个方法:

1、SavePageStateToPersistenceMedium

SavePageStateToPersistenceMedium 方法使用 PageStatePersister 属性所引用的 System.Web.UI.PageStatePersister 对象的 Save 方法存储页的视图状态和控件状态信息。

ASP.NET 包括 PageStatePersister 类的两个子类:在 ASP.NET 页包含的隐藏字段中保存状态信息的 HiddenFieldPageStatePersister 类和在与请求关联的 Session 对象中保存状态的 SessionPageStatePersister 类。 注意,使用SessionPageStatePersister 类时,隐藏的 VIEWSTATE 字段仍将像用于确定回发时那样呈现。

若要在您选择的位置保存状态,应创建 PageStatePersister 类的新子类,它可将状态保存并加载到您所选择的持久性介质中。 有关创建新的 PageStatePersister 对象的示例,请参见 PageStatePersister 类。

使用 .NET Framework 1.0 版或 1.1 版时,如果要从隐藏字段外的其他任何位置保存 Page 状态,则请重写此方法。 如果选择这样做,还必须重写 LoadPageStateFromPersistenceMedium 方法。

2、LoadPageStateFromPersistenceMedium

LoadPageStateFromPersistenceMedium 方法使用 PageStatePersister 属性所引用的 System.Web.UI.PageStatePersister 对象的 Load 方法来为 Page 对象加载任何保存的视图状态信息。

ASP.NET 包括 PageStatePersister 类的两个子类:在 ASP.NET 页包含的隐藏字段中保存状态信息的 HiddenFieldPageStatePersister 类和在与请求关联的 Session 对象中保存状态的 SessionPageStatePersister 类。

若要在您选择的位置保存状态,应创建 PageStatePersister 类的新子类,它可将状态保存并加载到您所选择的持久性介质中。 有关创建新的 PageStatePersister 对象的示例,请参见 PageStatePersister 类。

使用 .NET Framework 1.0 版或 1.1 版时,如果要从隐藏字段外的其他任何位置加载 Page 状态,则请重写此方法。 如果选择这样做,还必须重写 SavePageStateToPersistenceMedium 方法。

一、压缩viewState

先准备GZipHelper类

GZipHelper

重载SavePageStateToPersistenceMedium

SavePageStateToPersistenceMedium


重载LoadPageStateFromPersistenceMedium

LoadPageStateFromPersistenceMedium

结果:较以前页面大小减少了50%,但是所耗CPU要大,耗时要长。

 

二、保存viewState到服务器

 

Save

结果:ViewState从原来的保存在页面变成保存到了服务器,页面viewState大小为0,大大减少页面大小。但是要多做一个清除服务器历史viewstate数据操作。

原文地址:https://www.cnblogs.com/ivanyb/p/2274848.html