如何在asp.net中最小化页面的视图状态大小?

时间:2009-10-10 09:56:13

标签: asp.net viewstate

如何在asp.net中最小化页面的视图状态大小? 请帮忙。

6 个答案:

答案 0 :(得分:19)

您有几种方法可以减少ViewState:

  • 禁用ViewState 以获取不需要它的控件(这是最有效的解决方案)。例如。如果你可以在服务器上缓存一些数据,那么你可以将任何数据绑定控件与每个请求重新绑定,而不需要在ViewState中保存所有内容。
  • 在服务器(IIS)上启用HTTP压缩。这减少了发送到客户端的页面大小,包括ViewState。
  • 压缩ViewState 。与HTTP压缩相比,这还有一个额外的优势:它还减少了PostBacks(发送回服务器的数据)的大小,因为ViewState总是在PostBack期间发送回服务器。对此有各种方法,例如如this blog post
  • 所示
  • 将ViewState存储在服务器上,而不是将其发送到带有该页面的隐藏字段中。最简单的方法是使用SesionPageStatePersister,但还有其他解决方案将ViewState存储到磁盘而不是使用会话(see here for example)。

答案 1 :(得分:5)

大多数要点都在其他答案中突出显示。这可能是有帮助的:

减少服务器控件(例如web / html控件)的数量,特别是那些您不需要的控件。请改用简单的HTML标记。

我已经看到太多的冗余表/行/单元Web控件的情况,其中正常<表>,< tr>和< td>会做的。

答案 2 :(得分:1)

您无法最小化ViewState的大小。这是序列化/反序列化的ASP.NET。虽然您可以选择性地禁用不需要它的控件的ViewState。

答案 3 :(得分:1)

我选择在服务器上保存数据库本身的视图状态,不允许它在HTML中传递给膨胀页面大小的客户端。您可以扩展HiddenFieldPageStatePersister并解决此问题。如果你愿意,我已经写了一篇详细的文章......

http://ashishnangla.com/2011/07/21/reducing-size-of-viewstate-in-asp-net-webforms-by-writing-a-custom-viewstate-provider-pagestatepersister-part-12/

答案 4 :(得分:0)

您可以打开服务器上的压缩,以最大限度地减少通过网络传输的数据的大小,或将viewState保存到磁盘,并且永远不会将其发送到客户端。

答案 5 :(得分:0)

   protected override PageStatePersister PageStatePersister
    {
        get
        {
            return new SessionPageStatePersister(this);
        }
    }

在生成大型viewstate值的页面后面的代码中添加上面的代码。这允许将viewstate存储在会话中。现在只应添加一个视图状态的键。