跳至內容

OPcache

本頁使用了標題或全文手工轉換
維基百科,自由的百科全書
OPcache
原作者The PHP Group
首次釋出2008年,​17年前​(2008
程式語言C
類型PHP 擴充程式
授權條款PHP授權條款3.01
網站OPcache手冊首頁

OPcache是一個PHP擴充程式,由PHP官方釋出[1],其功能是快取編譯後的位元組碼以供後續使用[2],可提升程式的處理速度。[3][4][5]

歷史

[編輯]

2008年,OPcache的前身,PHPNG的開發已經開始[6],到了2013年,PHP團隊在新的5.5.0版本將OPcache合併進入PHP核心並被預設啟用,這標誌著OPcache成為官方且預裝擴充[7][6],同時,OPcache在該版本也更新了持久化功能,現在其可將位元組碼存入檔案系統[6],而到了PHP 7.4.0,OPcache則更新了預載入功能,該功能可以預先載入尚未執行的代碼以提升效能[8][6]。到了PHP 8.0.0 時,OPcache添加了一個內建的即時編譯器,原本快取的操作碼本來需要被直譯器即時轉譯為機器碼再執行,這次更新使得機器碼也可以被快取,省去了解釋的步驟,進一步提升效能[9],而在最新的PHP 8.4.0中,OPcache的JIT預設獲得了64MB的緩衝區空間,但需手工啟用[10]

原理

[編輯]

OPcache在訪問新代碼片段時,會檢查其是否存在於快取。若答案為否,則會編譯該段代碼,並將編譯後生成的位元組碼在主記憶體中進行快取[2][7][3],下一次執行同一段代碼時,便無需執行詞法分析等編譯過程,將直接從主記憶體中提取位元組碼進行執行而不是再次編譯[5][11][12]或即時編譯所有代碼[3]。同時,OPcache還會在代碼變動時自動更新快取的位元組碼[13]。另外,OPcache同樣快取了一些常數及檔案中的符號表[14]

實際效能提升

[編輯]

在PHP 5.5時,OPcache之效能提升約50%,同時降低了磁碟CPU的占用率(因為編譯過程需要消耗大量CPU[5][11][6],也間接因為效能瓶頸的降低提升了應用程式的可延伸性[15][16][17],提升如此顯著的原因是操作碼被快取,PHP無需再讀取、解析、編譯原始碼[4]

參考資料

[編輯]
  1. ^ PHP手冊編輯團隊. PHP: OPcache - Manual. PHP官方網站. [2025-10-28] (中文). 
  2. ^ 2.0 2.1 Ajzele, Branko. Mastering PHP 7: design, configure, build, and test professional web appilcations in PHP 7. Birmingham, UK: Packt Publishing. : 196 [2025-12-06]. ISBN 9781785889943. 
  3. ^ 3.0 3.1 3.2 WebGo. OPCache - Was ist das?. WebGo FAQs. [2025-10-29] (德語). 
  4. ^ 4.0 4.1 Josh Lockhart. 2. Modern PHP: New Features and Good Practices. [2025-12-06]. ISBN 9781491904992 (英語). 
  5. ^ 5.0 5.1 5.2 PHP 优化性能之 Opcache 扩展. VEITOOL. VEITOOL. 2024-09-13 [2025-11-01] (中文(中國大陸)). 
  6. ^ 6.0 6.1 6.2 6.3 6.4 Joe Niland. PHP OPcache Quick Reference. Sydney Blog. [2025-10-28] (英語). 
  7. ^ 7.0 7.1 PHP手冊編輯團隊. PHP: 简介 - Manual. PHP官方網站. [2025-10-28] (中文). 
  8. ^ PHP手冊編輯團隊. PHP: 预加载 - Manual. PHP官方網站. [2025-10-28] (中文). 
  9. ^ Erik Pöhler. Enable, configure and monitor PHPs OPCache - Erik Pöhler's Weblog. Erik Pöhler's Blog. [2025-10-30] (英語). 
  10. ^ PHP 8.4: Opcache: INI 对 JIT 启用方式的更改 | 日思录. 日思錄. 2024-02-29 [2025-11-02]. [需要較佳來源]
  11. ^ 11.0 11.1 Shahzeb Ahmed. PHP OPcache Explained: How to Improve Your App's Performance. Cloudways. 2018-11-22 [2025-10-30] (英語). 
  12. ^ HiBit. Boosting PHP performance with OPCache. HiBit Blog. [2025-10-28] (英語). 
  13. ^ Harish Kumar. PHP OPCache: The Secret Weapon for Laravel Performance Boost. Qirolab. 2024-07-26 [2025-10-30] (英語). 
  14. ^ 掌握PHP缓存利器:OPcache与APCu深度解析与优化技巧 - 云原生实践. 雲原生實踐. 2025-03-04 [2025-11-02]. [需要較佳來源]
  15. ^ LiquidWeb文件作者團隊. Zend OpCache for PHP. Liquid Web. [2025-10-30] (英語). 
  16. ^ Tejas. PHP 8+ Performance Tuning for WordPress: OPcache and Beyond - WisdmLabs. Wisdm Labs. 2025-08-13 [2025-10-30] (英語). 
  17. ^ 王宏仁. PHP核心開發者告訴你PHP 7的五大效能密技. iThome. 2015-12-26 [2025-11-01] (中文(臺灣)). 

外部連結

[編輯]