PHP緩存

導論

PHP本身來說是非??斓模钱斈惆l(fā)起遠程連接、加載文件等操作時也會遇到瓶頸。幸運的是,有各種各樣的工具可以用來加速你應用程序某些耗時的部分,或者說減少某些耗時任務所需要運行的次數(shù)。

Opcode緩存

當一個PHP文件被解釋執(zhí)行的時候,首先是被編譯成名為opcodes的中間代碼,然后才被底層的虛擬機執(zhí)行。如果PHP文件沒有被修改過,opcode始終是一樣的。這就意味著編譯步驟白白浪費了CPU的資源。
此時opcode緩存就派上用場了。通過將opcode緩存在內(nèi)存中,它能防止冗余的編譯步驟,并且在下次調(diào)用執(zhí)行時得到重用。設置opcode緩存只需要幾分鐘的時間,你的應用程序便會因此大大加速,實在沒有理由不用它。
PHP 5.5中自帶opcode緩存工具,叫做Zend OPcache,默認一般是開啟的,請在phpinfo()輸出中檢查opcache enable關鍵詞是否出現(xiàn)來確認是否開啟。早期的版本也能通過PECL擴展來安裝。

對象緩存

有時緩存代碼中的單個對象會很有用,比如有些需要很大開銷獲取的數(shù)據(jù)或者一些結(jié)果集不怎么變化的數(shù)據(jù)庫查詢。你可以使用一些緩存軟件將這些數(shù)據(jù)存放在內(nèi)存中以便下次高速獲取。如果你獲得數(shù)據(jù)后把他們存起來,下次請求直接從緩存里面獲取數(shù)據(jù),在減少數(shù)據(jù)庫負載的同時能極大提高性能。
許多流行的字節(jié)碼緩存方案也能緩存定制化的數(shù)據(jù),所以更有理由好好使用它們了。APCu、XCache以及WinCache都提供了API,以便你將數(shù)據(jù)緩存在內(nèi)存中。
最常用的內(nèi)存對象緩存系統(tǒng)是APCu和Memcached。APCu對于對象緩存來說是個很好的選擇,它提供了簡單的API,讓你能將數(shù)據(jù)緩存到內(nèi)存,并且容易設置和使用。APCu的局限性表現(xiàn)在它依賴于所在的服務器。另一方面,Memcached以獨立的服務的形式安裝,可以通過網(wǎng)絡交互,這意味著你能將數(shù)據(jù)集中存在一個高速存取的地方,而且許多不同的系統(tǒng)能從中獲取數(shù)據(jù)。
值得注意的是當你以CGI(FastCGI)的形式使用PHP時,每個進程將會有各自的緩存,比如說,APCu緩存數(shù)據(jù)無法在多個工作進程中共享。在這種情況下,你可能得考慮Memcached了,由于它獨立于PHP進程。
通常APCu在存取速度上比Memcached更快,但是Memcached在擴展上更有優(yōu)勢。如果你不希望應用程序涉及多個服務器,或者不需要Memcached提供的其他特性,那么APCu可能是最好的選擇。
注意在PHP 5.5之前,APC同時提供了對象緩存與字節(jié)碼緩存。APCu是為了將APC的對象緩存移植到PHP 5.5+的一個項目,因為現(xiàn)在PHP有了內(nèi)建的字節(jié)碼緩存方案(OPcache)。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • php緩存技術(shù) 普遍緩存技術(shù) 數(shù)據(jù)緩存:這里所說的數(shù)據(jù)緩存是指數(shù)據(jù)庫查詢緩存,每次訪問頁面的時候,都會先檢測相應的...
    桖辶殤閱讀 2,318評論 0 4
  • 緩存,顧名思義,就是臨時存儲信息以提高訪問性能。PHP的緩存技術(shù)大體可分為三大類: 1. 緩存內(nèi)容(Caching...
    wsdadan閱讀 2,756評論 0 1
  • PHP緩存之Opcode緩存 1. 什么是Opcode緩存? 當解釋器完成對腳本代碼的分析后,便將他們聲稱可以直接...
    人在碼途閱讀 584評論 0 0
  • 1、普遍緩存技術(shù):數(shù)據(jù)緩存:這里所說的數(shù)據(jù)緩存是指數(shù)據(jù)庫查詢PHP緩存機制,每次訪問頁面的時候,都會先檢測相應的緩...
    bycall閱讀 954評論 0 5
  • #白馬聲慢,我自手書# 這是一篇散文,也或許是一篇記敘文,也或許是我?guī)拙浜詠y語組成的回憶錄,因為說不清楚...
    淿恅栝閱讀 291評論 0 0

友情鏈接更多精彩內(nèi)容