【问题标题】:Show Dynamics CRM tabs in Javascript loop - performance在 Javascript 循环中显示 Dynamics CRM 选项卡 - 性能
【发布时间】:2017-08-30 17:02:53
【问题描述】:

我在 Dynamics CRM 2015 中遇到了性能问题。我必须显示所有选项卡,这些选项卡在表单上可用。所以我的 Javascript 代码如下所示:

Xrm.Page.ui.tabs.get().forEach(function (v, i) {
    var performance1 = performance.now();
    v.setVisible(true);
    var performance2 = performance.now();
    console.log(v.getName() + " show process took " + (performance2 - performance1) + " milliseconds.");
});

运行后,脚本写入控制台:

tab_10 show process took 4839.822311864544 milliseconds.
tab_13 show process took 5.218640743772994 milliseconds.
tab_14 show process took 4.996419017363223 milliseconds.
tab_7 show process took 3.8835254718323995 milliseconds.
tab_5 show process took 4.66844116813445 milliseconds. 
tab_17 show process took 4.570270927553793 milliseconds.
tab_20 show process took 3.5970468606719805 milliseconds.
tab_8 show process took 3.7335927407548297 milliseconds.
tab_16 show process took 3.5988317741357605 milliseconds.
tab_15 show process took 5.135642267643561 milliseconds.
tab_12 show process took 3.6483631227965816 milliseconds.
tab_19 show process took 6.199896921247273 milliseconds.

为什么显示第一个元素需要超过 4 秒 (!!!),而下一个元素需要 2 - 5 毫秒???

【问题讨论】:

  • 随机播放选项卡是否也一样?控件集不同,例如子网格等跨选项卡?
  • 是的。我在循环单行之前添加了:Xrm.Page.ui.controls.get("new_test").setVisible(true);,现在执行我的新行需要 4 秒,而不是列表的第一个元素。
  • CRM 页面的 DOM 和脚本加载时间可能显示为 4 秒。你试过在 IE 中按 ctrl+shift+q 来查看性能中心吗 (powerobjects.com/2014/10/07/…)
  • 在性能中心我可以看到,我的onLoad 函数与setVisible 需要4-5 秒,而没有setVisible 则不到1 秒。没有setVisible 调用的表单加载速度更快。是否有可能提高它的性能?
  • 如果 setVisible、Xrm.Page.ui.tabs.get("tabname").setDisplayState('collapsed');'expanded' 对您有用?

标签: javascript dynamics-crm microsoft-dynamics dynamics-crm-2015


【解决方案1】:

使用CRM Performance center 捕获指标并研究组件明智的表单负载分析。

Xrm.Page.ui.controls.get("tabname").setVisible(true); 

当为第一个控件执行上述语句setVisible 时,产品会渲染所有相关的 DOM 和脚本,因此大约需要 4 秒。这减少了后续调用。

这取决于浏览器以及它是如何工作的。

也许您可以使用setDisplayState 代替setVisible 来稍微降低数字。

Xrm.Page.ui.tabs.get("tabname").setDisplayState('collapsed')‌​;  
Xrm.Page.ui.tabs.get("tabname").setDisplayState('expanded')‌​;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-21
    • 1970-01-01
    • 2018-09-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多