【发布时间】:2011-05-07 06:41:46
【问题描述】:
是否有任何理由使用标准 HTML 控件(输入类型=文本,输入类型=复选框)而不是 asp.net 控件(asp:TextBox,asp:CheckBox)来提高性能?
【问题讨论】:
标签: asp.net optimization
是否有任何理由使用标准 HTML 控件(输入类型=文本,输入类型=复选框)而不是 asp.net 控件(asp:TextBox,asp:CheckBox)来提高性能?
【问题讨论】:
标签: asp.net optimization
与性能优化一样:这取决于具体情况。在你的项目中测试它,看看它是否有任何不同。
【讨论】:
恕我直言,这将是一个微优化。您将获得性能,但不会很明显。另一方面,您将失去服务器控件提供的大部分灵活性。
您可以尝试通过禁用不需要的控件来减小 ViewState 的大小。这将减小生成页面的大小并提高性能。
【讨论】:
除非您明确设置,否则 ASP.NET 用户控件都将具有与之关联的 ViewState
EnableViewState="False"
因此,如果您有大量控件,您将膨胀基础页面的大小。作为一般规则,使用满足您需求的即可。
在大多数情况下,它不会产生影响,但如果您不需要这些功能,最好保持页面清洁。
【讨论】:
此外,在 .net 4.0 中,使用服务器控件的另一个弊端已不复存在,因为您可以将 ClientIDMode 设置为 Static,这将使您可以完全控制控件上的 ID。由于命名容器的工作方式,以前只使用标准的textbox 或button(没有viewstate)仍然会呈现疯狂的不可读ID。不过,那些日子已经结束了:)
记住你的三个选项是:
runat="server" 添加到您现有的 html 标记(即 )中,您将能够以 HtmlControl 的身份访问它。<asp:* runat="server" />)选项 3 的缺点是您并不总是知道呈现的 html 标记将是什么,并且您对它的控制较少。我个人只将选项 3 用于更高级的控件,例如按钮 () 和第三方控件。对于我需要在服务器上引用的普通 html 标记,我更喜欢选项 2。
关于性能,我主要看渲染的输出,向客户端渲染了多少额外的膨胀等等。与 ASP.Net 已有的不同缓存技术相比,使用一种或另一种方法在服务器上的 CPU 时间是次要的。
【讨论】: