Javascript 使用Telerik网格提高ASPX页面性能

Javascript 使用Telerik网格提高ASPX页面性能,javascript,asp.net,telerik-grid,pagemethods,ie8-compatibility-mode,Javascript,Asp.net,Telerik Grid,Pagemethods,Ie8 Compatibility Mode,我的问题与改进aspx页面的性能有关。因此,在阅读完这篇文章后,请评论是否有可能改进此页面的性能 下面是一个场景 我正在使用以下工具开发一个asp.net web应用程序 .Net 3.5 类型化数据集(10个表) IE 8兼容性视图-IE7标准(应用程序不适用于FF、Chrome或任何其他浏览器) 遥控器。(网格、数字文本框、带自动完成功能的下拉列表) 应用程序结构缓存 Jquery和其他特定于页面的Java脚本 ASPX页面包含 8个网格(其中6个为telerik网格,2个为html表格)

我的问题与改进aspx页面的性能有关。因此,在阅读完这篇文章后,请评论是否有可能改进此页面的性能

下面是一个场景

我正在使用以下工具开发一个asp.net web应用程序

  • .Net 3.5
  • 类型化数据集(10个表)
  • IE 8兼容性视图-IE7标准(应用程序不适用于FF、Chrome或任何其他浏览器)
  • 遥控器。(网格、数字文本框、带自动完成功能的下拉列表)
  • 应用程序结构缓存
  • Jquery和其他特定于页面的Java脚本
  • ASPX页面包含

  • 8个网格(其中6个为telerik网格,2个为html表格)
  • 所有telerik网格都定义了EditFormTemplates
  • 很多控件(我不知道实际使用了多少控件,所以我不太想清理aspx页面,因为这可能需要大量的开发/质量保证工作,不幸的是,现在还不能选择。)
  • RadScriptBlock中有很多javascript。(我们还有javascrtip,可以在网格的宽度和其他UI上进行调整)
  • 已为页面上的所有网格和控件启用ViewState
  • 这些网格上的操作是-插入、更新、删除、复制、全部删除

    所有这些操作都是通过对等回发完成的

    由于大多数数据都缓存在appfabric中,所以数据库命中率不高

    这听起来可能有些奇怪,但在这个页面中有数千行代码。大约30k行代码隐藏,5k行jS,以及大约4k行(html/jS组合)的aspx页面。 代码中有复杂的逻辑,它在页面加载和每次部分回发时都会运行,并且大多数网格在几乎每次回发时都会重新绑定(ed)

    我们为提高性能所做的事情(没有多大帮助)。 注意:重写整个页面不是一个选项,所以所有的增强都必须放在这个页面上

  • 缩小了所有Java脚本、CSS
  • 在Radscript mangaers脚本集合中添加了所有脚本(我不知道这在任何情况下是否有帮助,但被告知这样做。)
  • 将aspx上编写的所有javascript从RadScriptBlock移动到js文件
  • 重构了大量代码并最小化了appfabric(推送、获取)的使用
  • RadCompression已经实现
  • 所有网格都使用服务器分页(每页5条记录)
  • 页面几乎没有任何静态内容。 页面缓存,片段缓存无法查看此页面的使用情况

    我不知道这是否让任何人感到惊讶,但是这个页面上的部分回发操作大约需要4-6秒(请求+响应+呈现)。我认为这是相当快的,看看在后台运行的代码。但客户不这么认为

    预期页面上的任何操作都不应超过1-1.5秒

    问题

  • 通过查看本页中使用的基础设施,是否有可能提高性能
  • 如果有可能的话,我遗漏了哪些东西,这些东西可以使页面表现得更好
  • 我已经看到,每个网格的ItemCreated和ItemDatabound被调用的次数要比
    行数
    多得多。我知道这是为每个项目调用的,即页眉、页脚和项目,但是如果我的行数为5,为什么这些方法调用了10次以上
  • 我在代码中看到,开发人员疯狂地使用了
    Rebind()
    方法(可能这就是#3的原因)。有人能告诉我打电话给Rebind的正确方式和地点吗?我知道Telerik grids在INSERT上调用rebind implicity,但在什么情况下我们需要显式调用rebind 我试图检查整个代码库,并试图找出瓶颈

    如果有人给我一些建议,我会非常感激,我已经准备好在代码上试用了

    如果需要更多信息,请告诉我

    多谢各位

    编辑

    在进一步分析之后,我检查了整个页面的viewstate,它大约为33kb。另外,当我从页面中删除AjaxSettings时,页面加载速度非常快,只需2/3秒。所以我觉得页面的Ajaxification在呈现页面时产生了一些问题


    我还记录了服务器进程的计时,根据网格的运行情况,大约需要1/2秒。

    经过大量分析,深入不同的层,我们发现有几个存储过程是罪魁祸首。还发现了对过程的非必要调用,这大大降低了页面速度。修复这一问题使我们的性能得到了很好的提升。我们还必须在网格渲染事件中进行一些调整


    我不确定这个答案是否对将来的人有帮助,但我希望至少它能给我们一些启示。Dynatrace在这个练习中非常方便。

    我举了一些例子,其中Telerik的数据访问配置不正确,这导致数百个单独的SQL查询来填充控件,而不是执行一个一次拉入所有数据的查询。
    与其重复我们为分析和修复它而采取的所有步骤,不如简单地将链接发布到我写的关于此的博客帖子上:

    查看这篇文章,它为Telerik AJAX控件提供了优化技术: