簡體   English   中英

nodeJS,mongoDB,express,eJS-關於內存緩存的意見

[英]nodeJS, mongoDB, express, eJS - opinions on memory caching

我正在使用此框架構建我的第一個網站,我正在重建一個用PHP + mySQL完成的網站,希望對性能有所了解...在我的網站中,我有兩種內容:

  • 博客文章(針對網站的兩個部分)-這些文章傾向於一天之內匯總成千上萬的記錄,並且經常更新
  • 靜態(某種)數據:這是我保存在數據庫中的信息,例如網站部分的數據(標題,元標記,標頭圖片url,固定的html內容,要包含在該部分中的javascript和css文件名),該信息很少更新,並且很小。

當我學習有關nodeJS的基礎知識時,我開始考慮一種無法使用PHP來改善網站性能的方法。 所以,我正在做的是:

當我運行該應用程序時,靜態內容全部加載到內存中,對於每個將數據存儲在數組中的內容,我都有一個“模型”對象,具有刷新該數據的方法,即,當管理員更新某些內容時,調用refresh()將新數據從數據庫獲取到該數組。 這樣,對於每個頁面加載,應用程序都直接查詢內存中的對象,而不是查詢數據庫。

我想知道的是,是否應該提高性能,直接在內存中使用對象,或者對數據庫的持續查詢是否同樣有效甚至更好。

任何支持您答案的文檔將不勝感激。

謝謝

在一般數據庫性能方面,MongoDB會將您的工作集保存在內存中-這是其基本操作方法。

因此,只要不存在引起數據交換的內存爭用,並且它不會太大而無法放入您的物理RAM中,那么對數據庫的查詢就應該非常快(一旦您將其保留在亞毫秒范圍內)首先將您的數據集放入頁面)。

當然,如果數據庫位於其他主機上,則您需要考慮網絡延遲,但是從理論上講,您可以將它們視為相同,直到您有理由質疑它為止。

我認為不會有任何性能差異。 第一件事是該靜態數據可能不會很大(最多100條記錄?),並且查詢數據庫也沒什么大不了的。 第二件事(更重要的是)是大多數數據庫引擎(包括mongoDB)具有內置的緩存系統(盡管我不確定它們如何工作)。 第三件事是,除非使用Redis這樣的存儲引擎,否則將查詢結果保存在內存中的伸縮性不好(對於大型網站)。 這是我的觀點,盡管我不是專家。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM