DevExpress MVC控制每页加载2mb的javascript

时间:2012-09-29 13:48:41

标签: c# javascript asp.net-mvc devexpress onload

我们已经开始使用DevExpress MVC控件,这需要在我们的Site.Master中添加此代码:

<% Html.DevExpress().RenderScripts(Page,
       new Script { ExtensionSuite = ExtensionSuite.GridView },
       new Script { ExtensionSuite = ExtensionSuite.HtmlEditor },
       new Script { ExtensionSuite = ExtensionSuite.Editors },
       new Script { ExtensionSuite = ExtensionSuite.NavigationAndLayout },
       new Script { ExtensionSuite = ExtensionSuite.Chart },
       new Script { ExtensionSuite = ExtensionSuite.Report }
 ); %>

但是这会通过名为DXR.axd的处理程序呈现一个巨大的2mb javascript文件。当使用Firefox时,这个javascript太大,会将页面的上传时间从大约500毫秒增加到大约5,000毫秒(我在之前和之后定时)。

使用Chrome可在~750毫秒内加载

这是一个严重的性能损失,并在页面呈现时导致非常明显的暂停。 Firefox报告说DOMContentLoaded事件需要5秒才能触发(因为加载和解析2mb的javascript需要很长时间)

我该怎么做才能解决这个问题?

我注意到他们自己的网站http://mvc.devexpress.com有完全相同的问题:如果你查看源代码并查找“DXR.axd”然后下载该文件它甚至更大,为2.6mb,他们也有一个Firefox中非常慢的onload

2 个答案:

答案 0 :(得分:2)

我认为他们创建一个动态js文件而不是使用静态js文件只是为了避免人们复制他们的js文件。然而,市场上还有其他控制没有这个问题。如果你需要一个特定的控件,你可以在那里找到......那么你必须在这个问题上生存下去......否则就换另一个控制套件。但是,考虑到更多的控件是“开箱即用”并且只需要编写几个代码就可以使用,更多的是你的性能......下去,因为每个控件都带有一些你实际上不需要的功能

答案 1 :(得分:1)

我不知道如何修复它,但我在当前的项目中使用DX组件超过一年,所以只想告诉你一件事:它是第三方组件所以你必须忍受它, 没有其它的方法。我项目中的组件也产生了大量的脚本,我个人认为你应该只用它来解决一个特定的问题(在我们的例子中是pivotgrid),而糟糕的性能是一种权衡。我自己在他们的组件中发现了一些错误,其中一些是低级别的实现,他们不能毫不犹豫地修复它,至少目前是这样。