LNMP 環境下常見的四大緩存擴展——Opcode 緩存陣營的 eAccelerator、XCache、APC,與分布式內存緩存 Memcached——功能定位截然不同。本文從原理、適用場景、效能實測三個維度深度對比,給出落地選型建議。
| 類別 | 擴展 | 核心作用 | 緩存對象 |
|---|---|---|---|
| Opcode 緩存 (PHP 加速器) | eAccelerator | 編譯緩存 + 腳本優化 | PHP 中間碼 |
| XCache | Opcode 緩存 + 優化器 | PHP 中間碼 | |
| APC (Alternative PHP Cache) | Opcode 緩存 + 用戶數據緩存 | 中間碼 + 變量數據 | |
| 分布式內存緩存 | Memcached | 跨節點 Key-Value 存儲 | 業務數據(Session、查詢結果等) |
apc.ttl=0(永不過期)+ 代碼部署後 reload PHP-FPM。apc_store()/apc_fetch() 存儲變量,但實測數量超閾值時性能劣於 Memcached。Zend OPcache 取代 APC Opcode 部分,APCu 僅保留用戶緩存。「Opcode 緩存二選一,分布式緩存單獨部署」
; XCache (php.ini)
xcache.size = 64M
xcache.count = 1
xcache.ttl = 0
xcache.var_size = 16M
; Zend OPcache (PHP 5.5+ 內建)
opcache.enable = 1
opcache.memory_consumption = 128
opcache.interned_strings_buffer = 8
opcache.max_accelerated_files = 10000
opcache.revalidate_freq = 60
opcache.fast_shutdown = 1
; Memcached 客戶端
memcached.sess_binary = 1
memcached.sess_consistent_hash = 1
正確理解緩存分層——Opcode 加速執行、內存緩存業務數據、分布式緩存解決一致性——是 PHP 高性能架構的基石。