【问题标题】:NodeJS + Template engine render slower comparing PHP与 PHP 相比,NodeJS + 模板引擎渲染速度较慢
【发布时间】: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


【解决方案1】:

首先,Jade 真的很慢,并且可能是最慢的模板引擎(这不是秘密)。
而第二个问题 - 您将模板引擎与 PHP 打印功能进行比较,这是错误的。为方便起见,尝试与 Node 的 util.log 或 console.log 进行比较,或者尝试在某些 php 模板引擎中使用 echo(如 smarty 或其他):)

另外,如果你想要速度 - 试试 doT (https://github.com/olado/doT)
顺便说一句,快递默认模式是开发,用玉试试这个

NODE_ENV=生产节点 app.js

【讨论】:

    猜你喜欢
    • 2010-12-16
    • 2018-07-01
    • 2015-09-17
    • 2015-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-21
    • 1970-01-01
    相关资源
    最近更新 更多