2012-03-08 38 views
0

我正在構建我的第一個站點,使用這個框架,我正在重建一個我在PHP + mySQL中完成的網站,並希望瞭解一些關於性能的內容......我的網站,我有兩種內容:nodeJS,mongoDB,express,eJS - 關於內存緩存的意見

  • 博客文章(該網站的2段) - 這些都傾向有一天能和成千上萬的記錄,並且更經常更新
  • 靜態( ):這是我保存在數據庫中的信息,比如站點部分的數據(標題,元標記,標題圖片URL,固定html內容,包含在該部分中的javascript和css文件名),這些信息很少更新,並且非常小在尺寸方面。

雖然我在學習nodeJS的基礎知識,但我開始考慮改進網站性能的一種方法,但是我無法用PHP做到這一點。所以,我正在做的是:

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

我想知道的是,如果應該增加性能,直接在內存中處理對象,或者如果對數據庫的持續查詢可以工作得一樣好,甚至更好。

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

謝謝

回答

1

我不認爲會有任何性能差異。首先,這個靜態數據可能不是那麼大(最多100條記錄?),查詢數據庫並不是什麼大不了的事情。第二件事(更重要的是)大多數數據庫引擎(包括mongoDB)都有內置的緩存系統(儘管我不確定它們是如何工作的)。第三件事情是,除非您使用像Redis這樣的存儲引擎,否則在內存中保存查詢結果的效果並不好(對於大型網站)。這是我的看法,雖然我不是專家。

2

就通用數據庫性能而言,MongoDB會將您的工作集保留在內存中 - 這是它的基本操作方法。

所以,只要沒有內存爭用導致數據被換出,並且它不太適合放入物理RAM,那麼對數據庫的查詢應該是非常快的(在子毫秒範圍內,一旦你有你的數據集在最初分頁)。

當然,如果數據庫位於不同的主機上,那麼您有網絡延遲來思考等等,但理論上,您可以將它們視爲相同,直到您有理由對其進行提問。