OPcacheとは?PHP高速化の仕組みを解説

OPcacheとは?PHP高速化の仕組みを解説

OPcache(オプキャッシュ)とは、PHPプログラムを実行するときに作られる「コンパイル済みの中間コード」をメモリへ保存し、次回以降の処理で再利用する仕組みです。 WordPressもPHPで動いているため、OPcacheが有効なサーバーでは、同じPHPファイルを毎回ゼロから解析・コンパイルする処理を減らせます。

ただし、OPcacheは「完成したWebページを保存するページキャッシュ」ではありません。 PHPそのものの実行準備を効率化する仕組みなので、WordPress高速化では他のキャッシュと役割を分けて理解することが重要です。

30秒でわかる結論

  • OPcacheは、PHPのコンパイル済みコードをメモリに保存して再利用する仕組み
  • 同じPHPファイルを毎回解析・コンパイルする処理を減らせる
  • WordPressのようなPHPサイトでは、PHP処理の効率化に役立つ
  • ページキャッシュ・Redis・ブラウザキャッシュとは保存するものが違う
  • 共用レンタルサーバーでは、サーバー会社側ですでに有効化されている場合がある
  • 初心者が独自に細かなOPcache設定を変更する必要は通常ない
  • VPSではメモリ容量や更新反映方法を理解して設定する必要がある

OPcacheとは?

PHPは、PHPファイルに書かれたソースコードをそのままCPUが実行しているわけではありません。 実行する前にPHPコードを解析し、Zend Engineが実行できる中間コードへ変換します。 この中間コードは一般に「opcode(オペコード)」と呼ばれます。

1
PHPファイルを読み込む
2
PHPコードを解析する
3
opcodeへコンパイルする
4
PHPを実行する

OPcacheが無効な環境では、同じPHPファイルを実行するときに、この解析・コンパイル処理が繰り返されます。 OPcacheを使うと、一度作ったコンパイル済みコードを共有メモリへ保存し、再利用できます。

OPcacheなし:PHP読込 → 解析 → コンパイル → 実行

OPcacheあり:保存済みopcodeを利用 → 実行

PHP公式でも、OPcacheはコンパイル済みスクリプトのバイトコードを共有メモリへ保存することで、毎回PHPスクリプトを読み込み・解析する必要を減らし、PHPの性能を改善する仕組みと説明されています。

WordPressでOPcacheが役立つ理由

WordPressは1ページを表示するときに、WordPress本体だけでなく、テーマや複数のプラグインに含まれるPHPファイルを実行します。 アクセスのたびに同じPHPコードを何度も解析・コンパイルすれば、その分だけ処理が増えます。

イメージ

あるページ表示でWordPress本体・テーマ・プラグインを含めて多数のPHPファイルが読み込まれるとします。 OPcacheが有効なら、そのうち変更されていないPHPファイルについて、コンパイル済みコードを再利用できます。

そのため、OPcacheはWordPressのPHP処理を効率化する土台の一つです。 ただし、データベース検索や外部API通信、画像読み込み、重いプラグイン処理そのものをすべて省略できるわけではありません。

OPcacheだけでWordPress全体が高速になるわけではない

WordPressの表示速度は、PHPだけでなくデータベース、ページキャッシュ、画像、テーマ、プラグイン、Webサーバー、ネットワークなどにも左右されます。OPcacheはその中の「PHPコードを実行する準備」を効率化する仕組みです。

OPcacheとページキャッシュの違い

OPcacheとページキャッシュは、どちらも「キャッシュ」という名前が付くため混同されやすいですが、保存するものが違います。

項目 OPcache ページキャッシュ
保存するもの PHPのコンパイル済みコード 生成済みHTMLなど
主な目的 PHP実行準備を省く ページ生成自体を省く
PHP実行 基本的に実行する キャッシュが使えれば省略できる場合がある
WordPress利用者 サーバー側で使うことが多い サーバー機能やプラグインで使うことがある

役割は競合ではなく補完

OPcacheとページキャッシュは「どちらか一方を選ぶ」ものではありません。OPcacheでPHP実行を効率化し、ページキャッシュでPHPやデータベース処理そのものを省略する、といった形で組み合わせられます。

OPcacheとRedis・Memcachedの違い

RedisやMemcachedもメモリを使うキャッシュですが、OPcacheとは対象が異なります。 WordPressではRedisなどを「オブジェクトキャッシュ」として利用し、データベース問い合わせ結果などを再利用する構成があります。

仕組み 主に保存するもの 主な役割
OPcache PHPのコンパイル済みコード PHP実行準備を効率化
Redis データ・DB問い合わせ結果など オブジェクトキャッシュ等
Memcached 一時的なデータ メモリキャッシュ
ページキャッシュ 完成済みHTMLなど ページ生成を省略

つまり、「OPcacheが有効だからRedisは不要」「Redisを使えばOPcacheはいらない」という関係ではありません。 それぞれ省略する処理が違います。

OPcacheはどこに保存される?

OPcacheは、通常はサーバーの共有メモリにコンパイル済みコードを保存します。 ディスクから毎回PHPコードを読み込み、解析・コンパイルする処理を減らすためです。

PHP公式の現在の既定値では、OPcache用共有メモリを指定する opcache.memory_consumption は128MBです。 ただし、レンタルサーバー会社が独自に調整している場合があるため、共用サーバー利用者が「自分のOPcacheは必ず128MB」と考えてはいけません。

128MB
PHP公式設定のopcache.memory_consumption既定値
10,000
max_accelerated_filesの現在の既定値

実際に必要な容量は、PHPファイル数やアプリケーション規模、同じPHP環境で動くサイト構成などによって変わります。 VPSでは監視しながら調整しますが、共用レンタルサーバーでは利用者がこの値を変更できない場合もあります。

OPcacheはPHPコードの変更をどう反映する?

OPcacheは古いコンパイル済みコードを再利用する仕組みなので、「PHPファイルを更新したら、いつ新しい内容へ切り替わるのか」が重要です。

PHPには opcache.validate_timestamps という設定があり、有効ならPHPファイルが更新されたかを確認します。 確認間隔は opcache.revalidate_freq で制御されます。

現在のPHP公式既定値

  • opcache.validate_timestamps = 1:更新確認を有効
  • opcache.revalidate_freq = 2:更新確認間隔は2秒

一方、opcache.validate_timestamps を無効にすると、PHPファイルを書き換えただけではキャッシュが自動更新されない構成になります。 その場合はOPcacheのリセット、該当ファイルの無効化、PHPやWebサーバープロセスの再起動などが必要になります。

VPSでは「高速化のため更新確認を切る」設定に注意

更新確認を無効にするとチェック処理を減らせますが、WordPress本体・テーマ・プラグインを更新したのに古いコードが残る原因になり得ます。仕組みを理解せず変更しないでください。

共用レンタルサーバーでは自分で設定する必要がある?

通常の共用レンタルサーバー利用者は、OPcacheを自分で一から導入・調整する必要はほとんどありません。 サーバー会社側がPHP実行環境の一部として設定している場合があるためです。

共用サーバー利用者が確認すること

  • 利用中サーバーがOPcacheに対応しているか
  • OPcacheが標準で有効になっているか
  • ユーザー側で有効・無効を切り替えられるか
  • PHPバージョン変更時も利用できるか
  • 更新後に表示がおかしい場合、キャッシュ削除機能があるか

管理画面にOPcacheの設定項目がなくても、裏側で有効になっている場合があります。 逆に、設定項目が見つからないからといって、無理に php.ini や設定ファイルへ追記する必要はありません。

教科書ポイント

共用サーバーでは「使えるか確認」までで十分

初心者はOPcacheの細かなパラメータを調整するより、サーバー会社が適切に管理している環境を利用する方が安全です。

VPSではどんな設定を確認する?

VPSや専用サーバーを自分で管理する場合は、OPcacheの有効化だけでなく、メモリ容量、キャッシュ可能なファイル数、更新確認方法などを管理します。

設定 意味
opcache.enable OPcacheを有効にする
opcache.memory_consumption 共有メモリ容量
opcache.max_accelerated_files キャッシュするスクリプト数の上限に関係
opcache.validate_timestamps PHPファイル更新を確認するか
opcache.revalidate_freq 更新確認間隔

現在のPHPでは opcache.enable の既定値は1です。 ただし、「既定値が有効=すべてのサーバーで必ず有効」とは限りません。 PHPのビルド方法、読み込まれている拡張機能、ホスティング側の設定によって実環境は変わります。

OPcacheが効いているか確認する方法

VPSなど自分でPHPを管理している環境では、PHPの設定情報やOPcacheのステータスから確認できます。 PHPには opcache_get_status() や opcache_get_configuration() といった確認用関数があります。

ただし、共用レンタルサーバーではセキュリティ上の理由などから、一部の情報取得機能が制限されている場合があります。 その場合はサーバー会社の公式マニュアルや管理画面を確認します。

phpinfoを公開したままにしない

PHP設定を確認するためにphpinfo()を使う場合、PHPバージョンやサーバー設定など多くの情報が表示されます。確認後は公開ファイルを削除し、第三者が閲覧できる状態にしないでください。

OPcacheを無効にした方がよいケースはある?

通常の本番WordPressサイトで、理由なくOPcacheを無効化する必要はありません。 ただし、開発中のPHPコードが変更後すぐ反映されないなど、キャッシュが原因と考えられる問題を切り分ける目的で一時的に確認することはあります。

その場合も、最初からOPcacheそのものを恒久的に無効化するのではなく、更新確認設定やキャッシュのリセット方法を確認します。

「変更が反映されない=OPcache」と決めつけない

WordPressでは、ページキャッシュ、ブラウザキャッシュ、CDN、オブジェクトキャッシュ、テーマやプラグイン独自キャッシュでも古い表示が残ることがあります。どのキャッシュが原因かを切り分けることが重要です。

OPcacheはどんなサイトで重要?

個人ブログ

理解度:基礎で十分

共用サーバー側で有効なら、そのまま利用すれば十分です。細かな設定変更は通常不要です。

WordPressサイト

重要度:高め

PHPを繰り返し実行するため、OPcacheはPHP処理の効率化に役立ちます。ただしページキャッシュ等とは別物です。

会社サイト

確認度:中

サーバー側でOPcacheが有効なら基本的に任せて構いません。更新後の反映トラブル時に存在を知っていると切り分けやすくなります。

VPS・専用サーバー

理解度:高め

メモリ容量・キャッシュ数・更新確認方法を管理者自身で調整する必要があります。

OPcacheの注意点

高速化率を固定の数字で考えない

「OPcacheを使えば必ず2倍速くなる」といった固定値では判断できません。 元のPHP処理量、ページキャッシュの有無、データベース負荷、アクセス状況によって差が変わります。

メモリを無制限に増やせばよいわけではない

OPcacheは共有メモリを使います。 VPSでメモリ容量を大きくしすぎれば、OS、Webサーバー、PHP-FPM、データベースなどが使えるメモリとのバランスが崩れます。

更新反映の仕組みを理解する

WordPress本体やテーマ、プラグインを更新するサイトでは、新しいPHPファイルが正しく反映される設定が重要です。 更新確認を無効化する場合は、デプロイ時にOPcacheを適切に更新する運用が必要です。

教科書判定

教科書判定

共用レンタルサーバー利用者は「OPcacheが有効なら任せる」で十分

初心者は、OPcacheを「PHPのコンパイル済みコードをメモリへ保存し、同じPHPファイルの解析・コンパイルを繰り返さない仕組み」と理解すれば十分です。

WordPress利用者が自分で細かな設定値を変更する必要は通常ありません。 共用レンタルサーバーではサーバー会社の標準設定を利用し、VPSを自分で管理する場合だけ、メモリ容量・更新確認・キャッシュリセットまで理解して調整してください。

FAQ

Q.OPcacheを有効にすればWordPressは必ず速くなりますか?

PHPの解析・コンパイル処理を減らせるため効率化に役立ちますが、サイト全体の速度はデータベース、テーマ、プラグイン、ページキャッシュ、画像などにも左右されます。必ず一定割合速くなるとはいえません。

Q.OPcacheとキャッシュプラグインは同じですか?

同じではありません。OPcacheはPHPのコンパイル済みコードを保存します。一般的なWordPressキャッシュプラグインは完成済みページや各種データをキャッシュするため、対象が違います。

Q.共用レンタルサーバーでOPcacheを設定する必要はありますか?

通常はありません。サーバー会社側でPHP環境として設定されている場合が多く、利用者が変更できないこともあります。まず公式仕様を確認してください。

Q.PHPファイルを変更したのに反映されないのはOPcacheが原因ですか?

可能性はありますが、ページキャッシュ、CDN、ブラウザキャッシュなど別の原因もあります。OPcacheの更新確認設定と他のキャッシュを順番に切り分けます。

Q.OPcacheとRedisはどちらを使えばよいですか?

役割が異なるため単純な二者択一ではありません。OPcacheはPHPコード、Redisはデータベース問い合わせ結果などのオブジェクトキャッシュに使われることがあります。必要に応じて両方使えます。

まとめ

この記事の結論

  • OPcacheはPHPのコンパイル済みコードを共有メモリへ保存する仕組み
  • 同じPHPコードの解析・コンパイルを繰り返す処理を減らせる
  • WordPressのPHP処理を効率化する土台の一つ
  • ページキャッシュやRedisとは保存対象が異なる
  • 共用レンタルサーバーでは事業者側の設定に任せればよい場合が多い
  • VPSではメモリ容量と更新確認方法まで管理する
  • 変更が反映されない場合は他のキャッシュも含めて切り分ける

OPcacheは専門的に見えますが、共用レンタルサーバー利用者が覚えるべきポイントはシンプルです。 「PHPを毎回ゼロからコンパイルせず、前回の結果を再利用して処理を効率化する仕組み」と理解し、細かな設定はサーバー管理者に任せるのが基本です。

次に読む

「PHPとは?Webサーバーとの関係を初心者向けに解説」「PHPバージョンとは?確認・変更方法と注意点」もあわせて確認してください。