我们已经开始使用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
答案 0 :(得分:2)
我认为他们创建一个动态js文件而不是使用静态js文件只是为了避免人们复制他们的js文件。然而,市场上还有其他控制没有这个问题。如果你需要一个特定的控件,你可以在那里找到......那么你必须在这个问题上生存下去......否则就换另一个控制套件。但是,考虑到更多的控件是“开箱即用”并且只需要编写几个代码就可以使用,更多的是你的性能......下去,因为每个控件都带有一些你实际上不需要的功能
答案 1 :(得分:1)
我不知道如何修复它,但我在当前的项目中使用DX组件超过一年,所以只想告诉你一件事:它是第三方组件所以你必须忍受它, 没有其它的方法。我项目中的组件也产生了大量的脚本,我个人认为你应该只用它来解决一个特定的问题(在我们的例子中是pivotgrid),而糟糕的性能是一种权衡。我自己在他们的组件中发现了一些错误,其中一些是低级别的实现,他们不能毫不犹豫地修复它,至少目前是这样。