2016-06-29 112 views
0

所以我目前正在調查哪些技術/庫等採用了一個新的,而大型項目......NodeJS,Express,Nginx和Jade ......有什麼優勢?

鑑於我的團隊的NodeJS,JavaScript的,快速和玉(現帕格)的知識,我/我們會理想的情況是喜歡將這些用於新項目。

但是,當前的問題在於如何使用路由中間件在Express下爲HTML服務。我們都知道Node/Express在提供靜態文件方面做得很差,這是Nginx進來的地方。我可以理解甚至實現一個處理img/js/css靜態文件服務的Nginx配置但我試圖找出的是...

爲了提高性能,可以使用Express路由將HTML服務(由Jade/Pug生成)提交給Nginx嗎?或者,如果您使用Express路由,您必須接受提供HTML文件的速度會很慢嗎?

一定是在說實話,我不太清楚這一切是如何結合在一起的所以我希望有人能提前球員和加爾斯

+1

如果你的HTML是靜態的,那麼你不需要Node,只需從nginx提供它。如果您的HTML是動態的,那麼您需要使用服務器端語言來生成它,即Node。在這方面,節點與其他服務器端語言沒有任何不同。 – MrWillihog

+1

nginx是一個負載均衡器。多個節點實例將在私有端口(3000,8000或其他)上的一臺或多臺服務器上運行,並且nginx將面向公衆並在它們之間進行負載平衡。 – jzm

+0

謝謝,不......內容將是動態的。數據通過路由傳入並呈現。那麼,我是否認爲我們只需要接受Node在提供HTML方面的緩慢?在提供動態HTML頁面時,Node如何比較以說PHP? : -/ – AdamJeffers

回答

1

這個;-)

感謝流下了小光沒有質疑有關詳細信息,我可以指出一些事情,我謹記的快速發展,當:

  • 快車「默認」通過res.render渲染完成的可能不是最優的一些原因。例如,查找爲其重新計算模板文件要求
  • 玉模板引擎不支持流

我建議,望着外面的干預措施應用程序上下文(如清漆或純Nginx的前CONF),嘗試:

  • 使用模板引擎支持流媒體:MarkoDustNunjucks

  • 如果應用程序是單頁面的,或者通常是基於ajax的應用程序,並且您不需要任何特殊的SEO設置(儘管也有修復),也可以預先緩存靜態html把它填充到客戶端(但這實際上只是一個咆哮)。

一個很好的概括來自Strongloop's blog post

+0

你的意思是「它不支持流媒體」?什麼流?我已經用Jade構建了一個WebRTC應用程序,並且是流式視頻和音頻。 – AdamJeffers

+1

HTTP流意味着您可以實際_start_立即發送響應,從而觸發客戶端刷新,然後_then_遞增發送其餘。這在Node.js內部使用例如'req.pipe'完成。另一篇博客文章解釋比我更好的是[這裏](https://strongloop.com/strongblog/streaming-chunked-html-node-js-data/)。 – sixFingers

+1

在生產模式下,模板被緩存。另外,我懷疑流式傳輸會帶來明顯的性能提升。 – robertklep

2

合理的建議:

  • 服務與NGINX靜態文件,你可以將其配置到 文件直接讀取。
  • 將NGINX的動態文件代理到您的快速應用程序,並設置足夠的緩存值。

能HTML(由玉/帕格生成)的服務,利用快遞路線 交給Nginx的,以提高性能?

是的,如果你緩存。

或者是這種情況,如果您使用Express路由,您必須 接受服務的HTML文件會慢?

如果緩存,則不是。

我希望有幫助!

+0

是的......謝謝:-) – AdamJeffers