【问题标题】:Impact on performance using ASP.NET Controls使用 ASP.NET 控件对性能的影响
【发布时间】:2009-03-08 23:24:19
【问题描述】:

对于页面上的用户控件,我了解每个控件都会通过将自己的状态存储在 ViewState 中来影响内存使用。我的问题是,多少钱?

例如 - 我有一个反馈表作为我的母版页上的控件。默认设置为 Visible="false"。用户单击反馈按钮,控件在需要时变为可见。

如果在每个页面(因为它位于母版页中)设置控制权,但不可见,相对性能会产生什么影响?我正在开发的网站可能会有大量流量,我想知道如果以后速度变慢,我是否会让自己头疼。

谢谢

【问题讨论】:

    标签: asp.net performance viewstate


    【解决方案1】:

    服务器和客户端的性能可能会受到影响。首先,您希望减少发送到客户端的 HTML 数量,包括视图状态。如果这位于每个页面上,那么您将比实际需要更频繁地发送此视图状态信息。

    我认为你应该有一些逻辑来确保反馈表单控件只添加到反馈页面。与其使用 visible="false",不如将其放在它自己的页面上并链接到它,或者将控件动态添加到页面中。

    主要好处将是减少带宽使用,并在客户端上更快地呈现页面。次要好处包括更容易调试和向客户端呈现更清晰的代码。

    对于所有性能问题,您应该测试性能并根据硬数据做出判断。在这种情况下,计算出客户端视图状态的大小,然后乘以请求数来查看服务器上带宽使用的大小。在客户端使用 FireBug 之类的工具来了解客户端收到的整体页面大小。

    【讨论】:

      【解决方案2】:

      这取决于控件。具有数百行的 Datagrid 可能会生成 100k 的视图状态。另一方面,复选框不会生成太多。

      您可以将反馈表单控件放在空的 aspx 页面上,在浏览器中访问它并检查 __viewstate 隐藏字段。这是您反馈表单将在视图状态方面添加到每个页面的数量。然后你必须决定它是否可以接受。

      我不会在一开始就考虑这样的优化。如果以后它会变慢,您可以随时将表单更改为纯 html 并使用 ajax 或其他东西将其数据发布到服务器。只要是用户控制而不是复制粘贴的内容,就很容易优化

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-12-10
        • 2013-08-30
        • 2021-03-09
        • 2011-06-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-04-27
        相关资源
        最近更新 更多