我使用Google Closure Compiler jar文件来最小化反映客户所做更改的生产JS文件。每次用户点击"发布更改"在后端面板上,它创建一个对compiler.jar文件的系统调用 - 但无论JS文件大小如何,每次调用都需要4-6秒。经过研究,我发现大部分延迟是为每次调用加载JavaVM。系统是Ubuntu和Python。
如何让JavaVM不断启动并运行,并在每次用户单击"发布"?
时加载compiler.jar文件Python代码:
import subprocess
jarjs = os.path.join(ROOT_DIR, "compiler.jar")
fn_output = fn_source.replace('.js','.min.js')
p = subprocess.Popen(['java','-jar',jarjs,'--jscomp_off','internetExplorerChecks','--compilation_level','SIMPLE_OPTIMIZATIONS','--js',fn_source,'--js_output_file',fn_output], stdout=subprocess.PIPE,stderr=subprocess.PIPE)
out, err = p.communicate()
答案 0 :(得分:1)
有几种通用的java解决方案可以加载进程,包括:
http://www.martiansoftware.com/nailgun/
和
https://github.com/ninjudd/drip
2018年9月更新:现在也可以使用Graal native-image
工具构建Closure编译器。这提供了惊人的更快启动,但降低了峰值性能。对于在JVM版本中构建在30秒以下的任何东西,这可能是一个很好的权衡。