Qooxdoo应用程序的构建大小优化

时间:2015-03-29 19:01:03

标签: optimization build qooxdoo

我想通过qooxdoo对生成的文件执行一些大小优化。 800Ko非常庞大...有关信息,它基于桌面方法。

我正在使用此配置:

"OPTIMIZE"      : ["basecalls", "comments", "privates", "strings", "variables", "variants", "whitespace"]

没有成功......

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

客户端优化

这是一种简单的方法。在Web服务器中设置gzip压缩。它会使你的构建~200-300 kB。您甚至可以预压缩构建并直接提供app.js.gz

然后设置您的Web服务器缓存。在途中是配置合理的缓存到期时间,例如,一个星期或一个月。对于更积极的缓存,过期设置为永久(年),您的构建URL看起来像/static/app.js?v=123。您可以使用简单的递增编号,VCS修订版或文件哈希。

部分构建

更灵活但更灵活的方式是use parts并将其与上述客户端优化相结合。这样,您可以按照按需加载组件的方式构建应用程序,并且不需要预先加载所有内容。然而,这需要更改您的应用程序,使其更加模块化,更少耦合,这通常是好事。

config.json中,您需要定义零件,应用程序的组件通常对应于不同的功能。我通常会common这样的工作:

"common" :
{            
  "packages" :
  {
    "sizes" : 
    {
      "min-package"          : 64,
      "min-package-unshared" : 16
    },
    "additional-merge-constraints" : true,
    "parts" :
    {
      "boot" :
      {
        "include" : ["${QXTHEME}", "${APPLICATION}.Application"]
      },
      "functionality1" :
      {
        "include" : ["${APPLICATION}.controller.Functionality1"] 
      },
      "functionality2" :
      {
        "include" : ["${APPLICATION}.controller.Functionality2"] 
      },
      ...
    }
  }
}

此处的引导部分包含引导应用程序所需的最小Qooxdoo依赖项。请注意,引导部分不太可能低于500 kB(未压缩)。

然后,当您想要使用某些功能时:

qx.io.PartLoader.require(['functionality1'], function()
{
  new (qx.Class.getByName('app.controller.Functionality1')).doSomething();
}, this);

请注意,部件加载器会为您解析依赖关系,因为部分functionality1可能具有其依赖关系。事实上,上面有3个定义部分的部分构建可能导致结果中少于或多于3个文件。该生成器使用复杂的依赖关系管理,因此如果它有利于负载性能,它可以拆分和折叠部件。

答案 1 :(得分:0)

您使用的优化配置是默认配置。因此,当您运行./generate.py build时,您应该已经获得了优化的构建。查看build/script/{myNamespace}.js。脚本的第一部分(可以说是管理或加载代码)没有经过优化,但框架代码和应用程​​序代码已经过优化(最后一条长线,最小化等)。

手册中有更多详细信息: