概要
webtoolsというサイトの一部ページのUIを修正した。
その時にキャッシュを導入しようかと思ったんだけど、
PHP の実行速度高速化のためにキャッシュを導入するとき、
OPcache, APCu, APC がそれぞれどの PHP のバージョンに対応しているのか、
それぞれがどういう機能なのかがいつもわからなくなるためメモ。
なお、内容はPcache / APCu / APC を使えるPHPのバージョンとそれぞれの違いに書いてあることの転載。
キャッシュエクステンションとPHPのバージョン
PHP5.4 以前 | PHP5.5 以降 |
---|---|
APC | OPcache + APCu |
それぞれの機能
Zend OPcache
オペコードキャッシュ(コンパイル後のコードをメモリに保存して再利用)
APCu
ユーザーキャッシュ(オブジェクトや変数をメモリに保存して、別のリクエストからそれを再利用)
APC
オペコードキャッシュ + ユーザーキャッシュ
PHPのバージョンによってキャッシュが異なる理由
APC のオペコードキャッシュ機能に深刻なバグがあり、PHP5.3の時点でPHPから削除された。
↓
APC のオペコードキャシュ機能を削除し、ユーザキャッシュ機能だけを残した APCu がリリースされる。
オペコードキャッシュ機能は OPcache がカバーすることに。
↓
その後、APC の安定板がリリースされたが PHP5.5には対応していない。
↓
結果、PHP5.5以降は OPcache + APCu となった。