我正在寻找一种方法来加速asp.net中的回发。我的问题是我在telerik RadGrid(几百左右)中显示了相当数量的项目。每个项目都有一个详细信息表。每个父项及其详细信息表中的项都有复选框。单击父项的复选框后,它将执行回发并检查或取消选中其所有详细信息表的项。当我这样做时,我会延迟1-2秒。
一些限制:
- 要在服务器端执行:我的客户更愿意将客户端脚本保持在最低限度 -Paging不是一个选项
我只能想到几件会导致性能下降的事情:
-ViewState size:虽然我没有在viewstate中明确存储任何值,但我认为我的主要问题是我在网格中显示的项目数量。
- 数据库的命中:当执行回发时(除了成员资格查询和其他业务逻辑),没有对数据库的额外调用。
我还有哪些其他方法可以加快我的回发速度?
修改
我忘了提到我的所有控件都已经使用Telerik的RadAjaxManagerProxy进行了调整。我将它们包含在名为pnlContainer
的Panel中,我正在执行以下操作:
<telerik:RadAjaxManagerProxy ID="RadAjaxManagerProxy1" runat="server">
<AjaxSettings>
<telerik:AjaxSetting AjaxControlID="pnlContainer">
<UpdatedControls>
<telerik:AjaxUpdatedControl ControlID="pnlContainer" />
</UpdatedControls>
</telerik:AjaxSetting>
</AjaxSettings>
</telerik:RadAjaxManagerProxy>
也许有更好的方法?
答案 0 :(得分:3)
如果发生重大回发,您可以尝试以下项目:
如果您具有深层控制层次结构(多级控件),则您的ID将占用大量空间,因为每个子控件的ID都是其所有父级的串联。因此,您的控件ID应尽可能小。
如果没有必要,请不要使用.NET控件。例如,如果你有一个静态标签,不要使用asp:Label但是使用普通的SPAN标签。
使用UpdatePanels与ChildrenAsTriggers = true和UpdateMode =条件
缩小您的javascript和CSS文件。
在不需要它的项目上禁用viewstate。
在Web服务器上启用压缩
答案 1 :(得分:1)
试试UpdatePanels。您只能回发需要它的页面的一部分,而不是重新处理整个页面。