【问题标题】:Optimizing sapui5/openui5 initialization in hybrid web apps优化混合 Web 应用程序中的 sapui5/openui5 初始化
【发布时间】:2015-04-18 11:11:43
【问题描述】:

我们正在使用 sapui5(通过 phonegap build 构建)构建一个混合网络应用。

整个应用(包括 sapui5)的启动时间有点慢,所以我们想对其进行优化。

所有 sapui5 文件都与混合应用程序打包在一起,因此在初始化期间没有进行网络请求。

这是我们当前对 sapui5 的初始化:

    <script id="sap-ui-bootstrap" type="text/javascript" src="sap-ui-core.js"
data-sap-ui-preload="sync"
data-sap-ui-theme="sap_bluecrystal"
data-sap-ui-libs="sap.ui.layout,sap.viz,sap.ui.commons,sap.ui.unified,sap.ui.ux3,sap.ui.table,sap.suite.ui.commons,sap.m,sap.me"></script>

我们目前使用的是 sapui5 版本 1.24.2。

我将使用performance.timing 对象来检查任何更改的效果。

我们将从 data-sap-ui-libs 中删除未使用的库,但是否可以采取其他措施?

【问题讨论】:

  • 减少 data-sap-ui-libs 产生了巨大的影响。从 11.3 秒到 6.5 秒(页面上加载了许多其他元素)。测量 performance.timing.domComplete - performance.timing.request 从 chrome 控制台开始

标签: cordova phonegap-build sapui5


【解决方案1】:

我不确定它是否对性能有很大帮助,但请确保您使用的是库的预加载版本,例如 sap/m/library-preload.json。这样,您还可以缩小混合应用安装包的大小,因为您可以删除控件的所有 .js 或 -dgb.js 文件。

【讨论】:

  • 谢谢,如何检查我是否使用了预加载?只是决定它的 data-sap-ui-preload 属性吗?
  • 对不起,编辑了最初的评论 :) 但将通过网络跟踪确认
【解决方案2】:

我还在构建一个启动时出现性能问题的混合应用程序。 我正在为 android 运行:cordova -v:4.3.0 cordova 平台版本 android:3.7.1 对于 ios:cordova -v:5.1.1 cordova 平台版本 android:3.8.0

我做了以下事情:

  • 当您将移动包 (openui5-runtime-mobile-1.30.8.zip) 与 data-sap-ui-preload="" 结合使用时。这将为您节省几个电话
  • 就像其他人已经提到的那样,只使用异步调用
  • 尽量不要在控制器的 init 方法中执行从开始屏幕开始就不需要的东西
  • 检查您的应用程序是否有耗时的操作 - 例如,我有一个 sap.m.List 没有增长激活
  • 我试过了,但没有成功:http://scn.sap.com/community/developer-center/front-end/blog/2015/04/29/fast-responding-sapui5-core-library-loader
  • 使用闪屏 -> 只是为了“隐藏”缓慢的启动时间

【讨论】:

    【解决方案3】:

    我遇到了类似的问题。因为你加载了很多库,你应该异步加载它们并在你的核心准备好时开始:

       <script id="sap-ui-bootstrap" type="text/javascript" src="sap-ui-core.js"
    data-sap-ui-preload="async"
    data-sap-ui-theme="sap_bluecrystal"
    data-sap-ui-libs="sap.ui.layout,sap.viz,sap.ui.commons,sap.ui.unified,sap.ui.ux3,sap.ui.table,sap.suite.ui.commons,sap.m,sap.me"></script>
    
    <script>
    
    
        var oCore = sap.ui.getCore().attachInit(function(){
        //start application
            });
        </script>
    

    我在这里找到了部分答案:How to load sapui5 resources in the background

    【讨论】:

    • 感谢您的建议。只要文件已经在应用程序中并且可以通过 file:// 路径访问,我认为我几乎没有什么收获。 SAP Documentation on Preload variant 还表明您需要显式处理初始化(导致现有代码更加复杂)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-16
    • 2010-11-07
    • 2021-06-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多