2011-07-29 105 views
1

我對編程有點新,並且對數據緩存有很多疑問。假設我們有一段靜態內容。什麼會更快:將內容保存到php \ html文件並按原樣輸出頁面,或者使用腳本通過apc_fetch()輸出內容(因爲它以前保存在內存中)?在第一種情況下,Apache總是會從文件系統讀取頁面,並且它永遠不會將頁面保存在RAM中,不是嗎?目前的APC實施與FastCGI協同工作嗎?提前致謝!緩存內容,內存vs文件系統(PHP和Apache)

對於使用APC緩存與使用文件系統相比,基準測試顯示四倍加速的原因仍然沒有得到解決,而Apache可以如此快地加載靜態頁面。

回答

0

靜態HTML將始終是最快的。即使使用操作碼緩存,PHP仍然需要加載和運行腳本,轉到緩存等。另一方面,Apache的主要目的是儘可能快地提供靜態內容,並且已經過優化。

+0

我仍然沒有得到作爲使用APC緩存相比,使用文件系統,而Apache可以加載靜態頁面,爲什麼基準測試顯示四倍加速很快。 – Dan

+0

我假設他們正在談論PHP代碼本身的文件系統,或者是一些序列化的數據。在這些情況下,APC一定會更快,因爲PHP通常會在每個請求上編譯代碼(或者在操作碼緩存的情況下從另一個文件加載操作碼)。但爲了讓手中的內容呈現出來,靜態HTML應該每次都贏。 –

1

不是緩存整個頁面靜態,我會緩存在該頁面上的動態部分(數據庫調用等),然後使用文件系統或memcache來存儲這些緩存結果。

隨着站點的增長,寫出靜態頁面將變得更加難以維護,而且如果您更頻繁地重新構建頁面,則會更加花銷。

0

如果您的網絡服務器不得不從磁盤獲取每個內容項,那麼它將會令人難以置信的緩慢。所有現代操作系統都實現了複雜的磁盤緩存。

將內容保存到一個PHP \ html文件,輸出的頁面原樣,或用一個腳本,將通過apc_fetch輸出內容()

訪問靜態文件(即不是一個PHP文件)比訪問PHP文件,解析PHP,然後執行PHP調用apc_fetch()要快得多。至於從PHP生成html頁面,還是使用PHP從APC檢索生成的結果會更快,答案將取決於PHP要做多少努力

我期望....

<?php 
print "hello world"; 
?> 

將快於

<?php 
print apc_fetch('hello'); 
?>