問題描述
我不斷聽到一些 PHP(操作碼) 緩存,如 – APC,XCache,Memcache,eAccelerator 等。
但我無法想像如何去選擇一個。除了緩存系統應該提供的性能優勢外,還有哪些其他因素應該引起關注。
為什麼你會説 X 緩存系統比 Y 好?我不太擔心相對績效的增長。任何兩個系統之間的微小差異都不大。
如果我的問題的一般答案是不可能的,這裏有幾個指針。我使用專門的 VPS 與 Mediatemple(根訪問) 。 RAM 是 512 MB(物理)+ 400MB(交換) 我關心 WordPress 及其表兄弟 WordPress-MU 和 BuddyPress 。我們的代碼/網站中有 90%屬於 WordPress 系列。
提前感謝一些幫助。
最佳解決方案
您列出的產品有不同的用途。
OPCode 緩存
在這個 Wikipedia list 上有許多 PHP 加速器 (OPCaches) 。與開放源碼產品一樣,它們都是非常相似的。 XCache 是lighttp PHP 加速器,是運行該 HTTPd 時的默認選項。它也適用於 Apache,但 APC 似乎在社交方面稍微更加 「與其他人打交道」,作為 PHP 的一部分正式支持,併發布了具有官方 PHP 發行版的 in-step 。
我放棄了 eAccelerator 的使用,因為它的發展緩慢,並且與 PHP 的發佈滯後,APC 提供的官方祝福狀態具有類似的性能。
這些產品通常會下降; 沒有代碼改變即時性能提升。使用大型代碼庫 (Drupal,Wordpress),性能可以達到 3x better,同時降低響應時間和內存使用量。
數據緩存
Memcache 是一個略有不同的產品 – 您可能會認為它是一個輕量級的鍵值系統,可以擴展到多個服務器。必須增強軟件以支持 Memcache,並且比其他方面更好地解決了某些問題。如果您的網站上有即時股票價值清單,您可以使用 Memcache 來保留您網站上顯示的當前價值的居民名單。您可以使用它來存儲會話數據以進行短期重用。您不會將其用於其他方面,例如 full-page 緩存或作為 MySQL 的替代品。
還有 Wordpress 插件,如 WP-Super-Cache,可以大大提高 Wordpress 的性能 (實際上,WP-Super-Cache 可以在許多情況下競爭靜態的 HTML 網站)
總而言之,如果您想要 「設置並忘記它,支持良好的產品」,我將非常推薦 APC 。
次佳解決方案
在 stackoverflow 上發佈了一個很好的答案,它很好地回答了你的問題。
第三種解決方案
APC 將內置到 PHP6 中,因此它是一個合理的選擇。我使用它,性能提升是驚人的。如果您需要緩存除操作碼之外的其他內容 (即數據庫查詢結果),那麼也可以使用 APC,但不可能在多個服務器之間共享 APC 緩存。如果您只需要在單個服務器上進行緩存,APC 就會很好。如果您需要擴展到多個服務器,並希望在它們之間共享一個緩存,那麼 memcached 就是你的人。
不過,我會做的一件事是為任何 (non-opcode) 緩存創建一個包裝類。這樣,您可以在不更改代碼的情況下交換緩存引擎。
第四種方案
只是要注意事情有所改變,似乎 APC 不會包含在 PHP 6 內核中。
APC 發展緩慢,看起來不會像 PHP 5.5 兼容。因為這樣,看起來像 PHP 的人會將 Zend OPCache 操作碼緩存擴展設置為 PHP CORE 擴展。你在這裏看更多 http://wiki.php.net/rfc/optimizerplus 。
重要提示:Zend OPCache 沒有像 APC 這樣的用户數據緩存,所以如果你需要用户數據緩存,你可以和 Memcache 一起使用它。
參考文獻
注:本文內容整合自 Google/Baidu/Bing 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。