2010-12-05 40 views
4

我的問題很簡單,我需要讀出一些模板(使用PHP)並將它們發送給客戶端。什麼是更昂貴的模板閱讀:數據庫查詢或文件閱讀?

對於這種數據,特別是text/html和text/javascript;將它們讀出MySQL數據庫或文件不足更爲昂貴?

親切的問候
湯姆

inb4安全;我意識到。 PS:我讀過關於類似問題的其他主題,但他們要麼處理其他類型的數據,要麼沒有得到回答。

回答

6

從數據庫中讀取更昂貴,毫無疑問。

平面文件在哪裏?在文件系統上。在最好的情況下,它們最近被訪問過,所以操作系統已經將文件緩存在內存中,並且它只是一個讀取內存的內容,讓它們進入你的PHP程序發送給客戶端。在最糟糕的情況下,操作系統必須在程序可以使用之前將文件從光盤複製到內存。

數據庫中的數據在哪裏存在?在文件系統上。最好的情況是,它們最近被訪問過,所以MySQL在內存中有這個表。但是,您的程序無法直接訪問該內存,它需要先與服務器建立連接,來回發送驗證數據,發送查詢,MySQL必須解析並執行查詢,然後從內存中獲取該行並將其發送到您的程序。在最糟糕的情況下,操作系統必須在MySQL可以獲得要發送的行之前,將磁盤上的數據庫表文件複製到內存中。

正如您所看到的,這些方案几乎完全相同,只是在將數據從內存或磁盤中取出之前,使用數據庫會涉及額外的連接和查詢開銷。

0

它真的沒有足夠的差異來擔心你。你與哪種音量合作?你會每天有超過一百萬的網頁瀏覽量嗎?如果沒有,我會說選擇哪一個最容易編碼和維護,不要擔心替代品的花費,直到它成爲一個問題。

具體而言,如果您的模板目前處於文件格式,我會將它們留在那裏,如果它們目前處於數據庫格式,我會將它們留在那裏。

+0

託比,我認爲從數據庫到文件或其他方式放在一起並不是一個真正的大問題,因爲你只做一次,並同意去你知道的那個! – 2010-12-05 08:57:45

1

有許多因素會影響兩者的成本。

  • 我假設既然他們是模板,他們可能不會經常改變。如果是這樣,flat-file可能是更好的選擇。任何重寫都應該在數據庫中完成。

  • 讀取平面文件應該比從數據庫讀取數據更快。

  • 讓他們在數據庫中通常可以讓多人更容易編輯。

您可以考慮使用內存緩存到存儲模板閱讀後,由於從內存中讀取總是比從一個數據庫或平面文件讀取速度更快。