优化asp.net中的回发

时间:2013-12-18 18:41:16

标签: c# asp.net postback

我正在寻找一种方法来加速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>

也许有更好的方法?

2 个答案:

答案 0 :(得分:3)

如果发生重大回发,您可以尝试以下项目:

  • 如果您具有深层控制层次结构(多级控件),则您的ID将占用大量空间,因为每个子控件的ID都是其所有父级的串联。因此,您的控件ID应尽可能小。

  • 如果没有必要,请不要使用.NET控件。例如,如果你有一个静态标签,不要使用asp:Label但是使用普通的SPAN标签。

  • 使用UpdatePanels与ChildrenAsTriggers = true和UpdateMode =条件

  • 缩小您的javascript和CSS文件。

  • 在不需要它的项目上禁用viewstate。

  • 在Web服务器上启用压缩

答案 1 :(得分:1)

试试UpdatePanels。您只能回发需要它的页面的一部分,而不是重新处理整个页面。