2015-05-21 22 views
1

我剛剛在php中更新了約Opcache,我對Codeigniter中基於文件的緩存並不熟悉。哪一個是更快的php基於文件的緩存或Opcache

但我認爲截至目前基於文件的緩存更快的其他緩存技術,因爲不會有任何數據庫訪問,它直接連接到生成的HTML文件加載。所以它應該比其他技術快。

所以我已經在谷歌搜索和一些websites compared通過基準測試他們提到的緩存的速度與其他緩存技術memcache和Opcache php相比,文件緩存檢索速度較慢,我對報告感到困惑。

我知道每一種緩存技術都有各自的優點和缺點。建議我關於這種情況,以便我的頁面不需要實時數據,而且目前我正在使用基於文件的緩存。所以去Opcache或Memache可以嗎?

+0

PHP是一種解釋型語言,不是一種編譯語言,換句話說,當PHP嘗試使用其中一個文件時,它首先讀取它並將其轉換(也稱爲編譯)成類似於可以運行的機器代碼。每次請求都會發生這種情況。 「opcache」所做的是將此機器代碼存儲在緩存中,以便PHP可以立即使用它而不是讀取和解析PHP文件。對於複雜的網站,由此帶來的速度提升可能非同尋常。 –

+0

如果您的渲染頁面不需要實時/動態數據,那麼從服務器的角度來看,文件/頁面緩存就是您需要的。設置expires標題,以便客戶端從客戶端角度對其進行緩存。 – AbraCadaver

+0

@Kevin - 在一個主要方面錯誤 - PHP是__not__解釋型語言;它是一種編譯語言....但它是JIT(Just in Time)編譯,這可能是什麼讓你感到困惑 –

回答

3

Opcache和Memcached將數據存儲在內存中。在絕大多數情況下,從內存中檢索數據比從文件系統中檢索數據要快。缺點?運行Memcached並使用opcache顯然會佔用服務器的一些內存。

+0

所以你說Opcache的數據庫結果也存儲在內存中?並沒有更多的時間數據庫查詢執行? – Raja

+1

@Yadheendran - OpCache純粹存儲腳本字節碼,而不是任何類型的數據,因此數據庫結果永遠不會存儲在OpCache中 –

0

OPcache通過將預編譯的腳本字節碼存儲在共享內存中來提高PHP性能,從而消除了在每個請求中加載和分析腳本的需求。
基於文件的緩存您正在討論的是關於將變量緩存到文件並在以後使用。 (經常在獲取數據的時間很慢時使用)
因此,仍然可以使用基於文件的緩存來存儲變量並使用Opcache來緩存腳本。但是,將數據緩存到內存會更快。在這種情況下,請嘗試使用Memcached/Redis或任何可以找到的東西。

相關問題