【问题标题】:ASP.NET - improve performanceASP.NET - 提高性能
【发布时间】:2011-05-07 06:41:46
【问题描述】:

是否有任何理由使用标准 HTML 控件(输入类型=文本,输入类型=复选框)而不是 asp.net 控件(asp:TextBox,asp:CheckBox)来提高性能?

【问题讨论】:

    标签: asp.net optimization


    【解决方案1】:

    与性能优化一样:这取决于具体情况。在你的项目中测试它,看看它是否有任何不同。

    【讨论】:

      【解决方案2】:

      恕我直言,这将是一个微优化。您将获得性能,但不会很明显。另一方面,您将失去服务器控件提供的大部分灵活性。

      您可以尝试通过禁用不需要的控件来减小 ViewState 的大小。这将减小生成页面的大小并提高性能。

      【讨论】:

        【解决方案3】:

        除非您明确设置,否则 ASP.NET 用户控件都将具有与之关联的 ViewState

        EnableViewState="False"
        

        因此,如果您有大量控件,您将膨胀基础页面的大小。作为一般规则,使用满足您需求的即可。

        • 您需要在代码隐藏中访问用户控件吗?
        • 您是否需要通过回传等控制来保持价值?

        在大多数情况下,它不会产生影响,但如果您不需要这些功能,最好保持页面清洁。

        【讨论】:

          【解决方案4】:

          此外,在 .net 4.0 中,使用服务器控件的另一个弊端已不复存在,因为您可以将 ClientIDMode 设置为 Static,这将使您可以完全控制控件上的 ID。由于命名容器的工作方式,以前只使用标准的textbox 或button(没有viewstate)仍然会呈现疯狂的不可读ID。不过,那些日子已经结束了:)

          记住你的三个选项是:

          1. 使用无法在服务器上引用的常规 html。
          2. 将 runat="server" 添加到您现有的 html 标记(即 )中,您将能够以 HtmlControl 的身份访问它。
          3. 使用 asp.net 标签 (<asp:* runat="server" />)

          选项 3 的缺点是您并不总是知道呈现的 html 标记将是什么,并且您对它的控制较少。我个人只将选项 3 用于更高级的控件,例如按钮 () 和第三方控件。对于我需要在服务器上引用的普通 html 标记,我更喜欢选项 2。

          关于性能,我主要看渲染的输出,向客户端渲染了多少额外的膨胀等等。与 ASP.Net 已有的不同缓存技术相比,使用一种或另一种方法在服务器上的 CPU 时间是次要的。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2013-05-26
            • 1970-01-01
            • 1970-01-01
            • 2021-02-22
            • 2010-11-12
            • 1970-01-01
            相关资源
            最近更新 更多