【发布时间】:2014-01-23 09:28:57
【问题描述】:
您好,我将 NodeJS 与模板引擎 ECT 和 MongoDB 用于数据。
现在我有了要渲染的简单代码: 150 x FOO。
当我使用 Node.js 模板引擎 (ECT) 渲染它时,响应时间是:1855ms
使用 PHP 的响应时间是:24ms
Node.js ECT 代码:
<?- "FOO"; ?>
<?- "FOO"; ?>
<?- "FOO"; ?>
<?- "FOO"; ?>
<?- "FOO"; ?>
...
PHP 代码:
<?php echo 'FOO'; ?>
<?php echo 'FOO'; ?>
<?php echo 'FOO'; ?>
<?php echo 'FOO'; ?>
<?php echo 'FOO'; ?>
...
缓存已关闭。
而计数越大越慢成为 NodeJS 应用程序 (ECT)
有什么我想念的吗?
PS:我也使用了 NodeJS + Jade。它似乎更慢。
更新:
重现问题的教程(使用 Jade 的 NodeJS 应用程序):
- 尝试检查此应用程序: NodeJS-app
-
将“views/index.jade”文件更改为:
extends layout block content input(type="text" value="#{'FOO'}") input(type="text" value="#{'FOO'}") input(type="text" value="#{'FOO'}")...//150x FOO (not "for" loop)
NodeJS:v0.10.22
MongoDB shell 版本:2.4.8
Linux:Ubuntu 10.04.4 LTS
【问题讨论】:
-
检查这个ectjs.com/#benchmark 还有一个关于他们所做的测试的git repo
-
你一定做错了什么。我的 nodejs 页面总是在不到 10 毫秒内返回,这涉及到更多的逻辑:)
-
@ExxKA,我有一个使用大量内联数据的表单页面。像 (Jade)。如果我第一次访问它,它会加载大约 10 秒。调试后我发现如果我放置了很多内联代码,那么 ECT/Jade 模板引擎会渲染得很慢。
-
对,但这不是因为 Jade 第一次缓存它吗?一种解决方案可能是在您启动服务器时计算所有模板,以便它们被缓存并准备就绪。我自己从未使用过 Jade,所以我不确定使用其他东西是否会获得更好的性能。小胡子一直很适合我。
-
除非您需要支持禁用 JavaScript 的客户端,否则不要使用模板。它们是无法维护的噩梦,现在不是 2005 年。编写客户端应用程序并传递 JSON 数据以通过 REST 调用填充页面!将渲染委托给客户端。 ;)
标签: php performance node.js pug template-engine