我想通过qooxdoo对生成的文件执行一些大小优化。 800Ko非常庞大...有关信息,它基于桌面方法。
我正在使用此配置:
"OPTIMIZE" : ["basecalls", "comments", "privates", "strings", "variables", "variants", "whitespace"]
没有成功......
有什么想法吗?
答案 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
。脚本的第一部分(可以说是管理或加载代码)没有经过优化,但框架代码和应用程序代码已经过优化(最后一条长线,最小化等)。
手册中有更多详细信息: