代码之家  ›  专栏  ›  技术社区  ›  Himadri

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

  •  9
  • Himadri  · 技术社区  · 15 年前

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

    6 回复  |  直到 9 年前
        1
  •  19
  •   M4N    14 年前

    您有几个选项可以减少视图状态:

    • 禁用视图状态 对于不需要它的控件(这是最有效的解决方案)。例如,如果您可以在服务器上缓存一些数据,那么您可以将任何数据绑定控件与每个请求重新绑定,并且不需要将所有内容保存在viewstate中。
    • 在服务器(IIS)上启用HTTP压缩 . 这会减小发送到客户机的页面的大小,包括视图状态。
    • 压缩视图状态 .与HTTP压缩相比,这还有一个额外的优势:它还减少了回发(发送回服务器的数据)的大小,因为在回发过程中,视图状态总是被发送回服务器。有多种方法可以实现这一点,例如 this blog post .
    • 将视图状态存储在服务器上 而不是将其与页面一起发送到隐藏字段中。最简单的方法是使用 SesionPageStatePersister 但还有其他解决方案将视图状态存储到磁盘而不是使用会话( see here for example )
        2
  •  5
  •   o.k.w    15 年前

    大多数要点都在其他答案中突出显示。这里有一个可能会有所帮助:

    减少服务器控件(例如Web/HTML控件)的数量,尤其是那些您不需要的控件。使用简单的HTML标记代替。

    我已经看到过太多的冗余表/行/单元格Web控件的情况,在这些情况下,正常的<table>、<tr>和<td>将执行这些操作。

        3
  •  1
  •   Darin Dimitrov    15 年前

    不能最小化视图状态的大小。它是ASP.NET,用于序列化/反序列化。尽管您可以有选择地为不需要的控件禁用viewstate。

        4
  •  1
  •   Ashish Nangla    13 年前

    我选择将服务器上的视图状态保存在数据库本身中,而不允许将其以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/

        5
  •  0
  •   user156791    15 年前

    您可以在服务器上打开压缩以最小化通过网络传输的数据的大小,或者将viewstate保存到磁盘上,而不将其发送到客户机。

        6
  •  0
  •   ihimv    9 年前
       protected override PageStatePersister PageStatePersister
        {
            get
            {
                return new SessionPageStatePersister(this);
            }
        }
    

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