【问题标题】:Improve ASPX page performance with Telerik grids使用 Telerik 网格提高 ASPX 页面性能
【发布时间】:2015-02-11 22:15:16
【问题描述】:

我的问题与提高 aspx 页面的性能有关。所以看完这篇文章后,请评论是否有可能提高这个页面的性能。

这是场景。

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

  1. .Net 3.5
  2. 类型化数据集(10 个表)
  3. IE 8 兼容性视图-IE7 标准(应用程序不适用于 FF、Chrome 或任何其他浏览器)
  4. Telerik RadControls。 (网格、数字文本框、带有自动完成功能的下拉菜单)
  5. 应用结构缓存。
  6. Jquery 和其他特定于页面的 javascripts。

ASPX 页面包含

  1. 8 个网格(其中 6 个是 Telerik 网格,2 个是 html 表格)
  2. 所有 Telerik 网格都定义了 EditFormTemplates。
  3. 很多控件(我不知道实际使用了多少控件,所以我不太热衷于清理 aspx 页面,因为这可能需要大量的 dev/qa 工作,不幸的是现在不是一个选项.)
  4. RadScriptBlock 中有很多 javascript。(我们还有 javascrtip 可以调整网格的宽度和其他 UI)
  5. 为页面上的所有网格和控件启用 ViewState。

对这些网格的操作是 - 插入、更新、删除、复制、全部删除。

所有这些操作都是通过部分回发完成的。

因为大部分数据都缓存在 appfabric 中,所以没有多少数据库命中。

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

我们为提高性能所做的事情(没有太大帮助)。 注意:再次重写整个页面不是一个选项,因此所有增强功能都必须在此页面中进行。

  1. 缩小所有 javascript、CSS
  2. 在 Radscript mangaers 脚本集合中添加了所有脚本(我不知道这是否会有所帮助,但被告知这样做。)
  3. 将所有写在 aspx 上的 javascript 从 RadScriptBlock 移到 js 文件中
  4. 重构了大量代码并最大限度地减少了 appfabric(push,get) 的使用。
  5. RadCompression 已实现。
  6. 所有网格都使用服务器分页(每页 5 条记录)。

页面几乎没有任何静态内容。 Page Caching,Fragment 缓存是不可能的看这个页面的使用情况

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

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

问题

  1. 查看此页面中使用的基础架构是否可以获得这种性能提升
  2. 如果有可能的话,我缺少哪些可以使页面性能更好的东西。
  3. 我看到每个网格的 ItemCreated 和 ItemDatabound 被调用的次数比 RowCount 多很多。我知道这是为每个项目(即页眉、页脚和项目)调用的,但如果我的行数为 5,为什么这些方法被调用超过 10 次?
  4. 我在代码中看到开发人员疯狂使用Rebind() 方法(可能这就是#3 的原因)。谁能告诉我调用 Rebind 的正确方法和位置是什么?我知道 Telerik 网格在插入时隐式调用 rebind,但是在什么情况下我们需要显式调用 rebind?

我正在尝试审查整个代码库并试图找出瓶颈。

如果有人给我任何我准备在代码上尝试的建议,我将不胜感激。

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

谢谢。

编辑

进一步分析,我检查了整个页面的视图状态,它大约是 33kb。此外,当我从页面中删除 AjaxSettings 时,页面加载速度非常快,只需 2/3 秒。所以我觉得页面的Ajaxification在渲染页面时产生了一些问题。

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

【问题讨论】:

标签: javascript asp.net telerik-grid pagemethods ie8-compatibility-mode


【解决方案1】:

经过大量分析和挖掘不同层,我们发现有几个存储过程是罪魁祸首。还发现了对程序的不必要调用,这大大减慢了页面速度。修复它给了我们很好的性能提升。此外,我们还必须对网格渲染事件进行一些调整。

不确定这个答案将来是否对某人有所帮助,但我希望至少它会提供一些指导。 Dynatrace 在这个练习中非常有用。

【讨论】:

    【解决方案2】:

    我有一些示例,其中 Telerik 的数据访问配置不正确,这会导致数百个单独的 SQL 查询来填充控件,而不是执行一次提取所有数据的单个查询。 与其重复我们为分析和修复它而采取的所有步骤,我希望我只是将链接发布到我写的关于此的博客文章的链接:http://apmblog.dynatrace.com/2014/04/03/database-access-patterns-gone-wild-inside-telerik-sharepoint-and-asp-net/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-09-10
      • 1970-01-01
      • 1970-01-01
      • 2012-11-25
      • 2011-03-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多