Nashorn脚本缓存

时间:2016-07-13 07:32:15

标签: java nashorn

有没有办法缓存Nashorn中评估的脚本,以避免两次评估相同的脚本?

例如,我有一些js库可以做某事。我想评估一次Library并将其重用于我想要的每个文件。

public void modifyFile(String inputFile){
    scriptEngine = new ScriptEngineManager().getEngineByName("nashorn");
    bindings = scriptEngine.createBindings();
    scriptEngine.eval(new FileReader("css-lib.js"),bindings);
    bindings.put(INPUT, readFile(inputFilePath, StandardCharsets.UTF_8));
    scriptEngine.getContext().setWriter(new StringWriter());
    executeScript(COMPRESS_SCRIPT_PATH, scriptEngine, bindings);
}

1 个答案:

答案 0 :(得分:3)

如果你" eval"在两次相同的脚本上,Nashorn引擎将运行该脚本两次!但是两次评估并不意味着两次编译(到字节码)。 Nashorn会缓存已编译的表示并重新使用。