【问题标题】:NodeJS, Express, Nginx and Jade... whats the deal?NodeJS、Express、Nginx 和 Jade……有什么关系?
【发布时间】:2023-04-05 08:16:02
【问题描述】:

所以我目前正在研究为一个新的、相当大规模的项目采用哪些技术/库等......

鉴于我的团队对 NodeJS、JavaScript、Express 和 Jade(现为 Pug)的了解,我/我们希望在新项目中采用这些。

然而,目前的症结在于使用路由中间件在 Express 下提供 HTML 的方式。

我们都知道 Node/Express 在提供静态文件方面做得很差,这就是 Nginx 的用武之地。我可以理解甚至实现一个 Nginx 配置来处理 img/js/css 静态文件的服务,但是我想知道的是这个......

是否可以将使用 Express 路由的 HTML 服务(由 Jade/Pug 生成)移交给 Nginx 以提高性能?还是如果您使用 Express 路由,您必须接受 HTML 文件的服务会很慢?

说实话,我不太确定这一切是如何结合在一起的,所以希望有人能对此有所了解;-)

在此先谢谢大家

【问题讨论】:

  • 如果您的 HTML 是静态的,那么您不需要 Node,只需从 nginx 提供它即可。如果您的 HTML 是动态的,那么您需要一种服务器端语言来生成它,即 Node.js。在这方面,Node 与任何其他服务器端语言没有什么不同。
  • nginx 是一个负载均衡器。多个节点实例将在私有端口(3000、8000 或其他)上的 1 个或多个服务器上运行,并且 nginx 将面向公众并在它们之间进行负载平衡。
  • 谢谢,不...内容将是动态的。数据通过路由传入和渲染。那么,我是否正确地认为我们只需要接受 Node 在提供 HTML 方面的缓慢性? Node 在提供动态 HTML 页面方面与 PHP 相比如何? :-/
  • @AdamJeffers 抱歉,但是.. 虽然问题是关于静态文件,但您的评论是关于动态文件。如果它们是动态的,您可以考虑通过 Varnish 或其他一些逻辑进行缓存;如果它们是完全静态的,您可以避免接触 node.js 并通过 Nginx 发送它;然而,我没有发现 express 的静态文件服务 很慢。
  • 您可以使用 nginx 提供静态 HTML。但是,如果 HTML 是在 Express 中使用 Jade 动态生成的,那么您不能使用 nginx 来提供它,因为内容是在 Express 中创建的。

标签: javascript node.js express nginx pug


【解决方案1】:

合理的建议:

  • 使用 NGINX 提供静态文件,您可以将其配置为获取 直接文件。
  • 使用代理到您的 express 应用的 NGINX 提供动态文件,并设置足够的缓存值。

可以使用 Express 路由提供 HTML(由 Jade/Pug 生成) 交给 Nginx 来提升性能?

是的,如果你缓存的话。

或者,如果您使用 Express 路由,您必须 接受 HTML 文件的服务会很慢吗?

如果您缓存则不会。

希望对你有帮助!

【讨论】:

    【解决方案2】:

    在不询问更多细节的情况下,我可以指出我在 Express 上开发时要记住的一些事情:

    • 由于多种原因,通过res.render 完成的“默认”渲染可能不是最佳的。例如,查找每个请求重新计算的模板文件
    • Jade 模板引擎不支持流式处理

    我建议,在查看应用程序上下文之外的干预(例如 Varnish 或普通 Nginx conf)之前,尝试:

    • 使用支持流式传输的模板引擎:MarkoDustNunjucks

    • 1234563 static html 然后在客户端填充它(但这实际上只是一个咆哮)。

    一个很好的概述来自Strongloop's blog post

    【讨论】:

    • “它不支持流媒体”是什么意思?流什么?我之前用 Jade 构建了一个 WebRTC 应用程序,那就是流视频和音频。
    • HTTP 流式处理意味着您实际上可以开始立即发送响应,从而触发客户端刷新,然后然后逐步发送其余的。例如,在使用 req.pipe 时,这是在 Node.js 内部完成的。另一篇比我解释得更好的博文是here
    • 在生产模式下,模板被缓存。此外,我怀疑流式传输是否会带来显着的性能提升。
    • 总的来说,我觉得这个问题很模糊,所以是的,我同意这可能不是 解决方案。但我必须说 Jade 的表现并不是城里最好的,所以我仍然觉得 @AdamJeffers 可能会受益于更好的模板引擎。至于流媒体,其实不是性能问题,基本一样,更多的是对速度的感知
    猜你喜欢
    • 1970-01-01
    • 2012-01-16
    • 2015-05-09
    • 2023-03-04
    • 2015-10-06
    • 2012-07-04
    • 2021-07-30
    • 2016-02-13
    • 2022-01-05
    相关资源
    最近更新 更多