使用Rhino分析Javascript代码
我正在开发一个系统,该系统预先生成CanJS应用程序的页面。这样我们的页面就可以立即使用,我们不需要用#来处理SEO内容!和无头浏览器 问题在于,的性能似乎比V8或现代浏览器中使用的其他本机Javascript引擎慢得多。而在浏览器内部,页面最坏情况下需要3-4秒来生成EJS模板,需要10-12分钟。页面和生成器都使用从RESTful API收集的相同JSON 我使用最高优化级别创建了Javascript上下文:使用Rhino分析Javascript代码,java,javascript,rhino,ejs,Java,Javascript,Rhino,Ejs,我正在开发一个系统,该系统预先生成CanJS应用程序的页面。这样我们的页面就可以立即使用,我们不需要用#来处理SEO内容!和无头浏览器 问题在于,的性能似乎比V8或现代浏览器中使用的其他本机Javascript引擎慢得多。而在浏览器内部,页面最坏情况下需要3-4秒来生成EJS模板,需要10-12分钟。页面和生成器都使用从RESTful API收集的相同JSON 我使用最高优化级别创建了Javascript上下文: context = ContextFactory.getGlobal(). con
context = ContextFactory.getGlobal().
context.setOptimizationLevel(9);
scope = context.initStandardObjects();
scriptable = context.newObject(scope);
使用当前
现在,一旦我调用这个方法,它需要很长时间
HashMap<String, Object> parameters = new HashMap<String, Object>();
// ...
// ... loading some content into parameters hashmap
// ...
String ejsTemplate = "... a pre loaded ejs template from file ..."
String serializedParameters = jsonParser.toJson(parameters);
Function fct = (Function) scope.get("invokeEjs", scope);
Object resultTemp = fct.call(context, scriptable, scriptable, new Object[] { ejsTemplate, serializedParameters });
HashMap参数=新的HashMap();
// ...
// ... 将一些内容加载到hashmap参数中
// ...
String ejsTemplate=“…从文件中预加载的ejs模板…”
String serializedParameters=jsonParser.toJson(参数);
函数fct=(函数)scope.get(“invokeEjs”,scope);
Object resultTemp=fct.call(上下文、可编写脚本、可编写脚本、新对象[]{ejsTemplate、serializedParameters});
serializedParameters可能会变得非常大,但这不会影响浏览器,我希望Rhino实现不会花费超过两倍的时间
我现在被困在这里,不知道如何继续。如何分析花费那么多时间的内容?原因是什么?不要使用Rhino。这太慢了。看看node.js或Phantom.jsmh,好吧,因为我可以本机使用javascript。。。糟糕的是,没有快速的翻译。但在这种情况下,切换到nodejs并得到了一个后续问题:可能重复的
HashMap<String, Object> parameters = new HashMap<String, Object>();
// ...
// ... loading some content into parameters hashmap
// ...
String ejsTemplate = "... a pre loaded ejs template from file ..."
String serializedParameters = jsonParser.toJson(parameters);
Function fct = (Function) scope.get("invokeEjs", scope);
Object resultTemp = fct.call(context, scriptable, scriptable, new Object[] { ejsTemplate, serializedParameters });