今回の内容は高速化の検証で明らかな差が見られなかったので、あくまで仕組みとして話を進めます。

PHPにはOPCacheというコンパイル済みのバイトコードを共有メモリに保存し、PHP がリクエストのたびにスクリプトを読み込み、パースする手間を省くことでパフォーマンスを向上できる機能があります。

PHP: はじめに - Manual


OPCacheは下記の記事に従って、PHPの環境を構築すれば自動で利用可能になります。

さくらのVPSにUbuntu18.04を入れてSOY CMSを動かした時のメモ


OPCacheが有効になっているか?は下記のコマンドを実行すればわかります。

php -v
PHP 7.4.6 (cli) (built: May 14 2020 10:03:07) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
    with Zend OPcache v7.4.6, Copyright (c), by Zend Technologies

OPCacheの設定で高速化できるものはあるか?OPCacheの実行時設定のページを見ていたら、

 opcache.revalidate_freq integer
    更新のためにスクリプトのタイムスタンプをチェックする頻度。(秒単位) 0 にすると、OPcache は、リクエストごとに更新をチェックします。
    この設定ディレクティブは、 opcache.validate_timestamps が無効の場合、 無視されます。

PHP: 実行時設定 - Manual#opcache.revalidate_freq


PHPのコードを実行(ページを表示)する度にスクリプトの更新状況をチェックする設定があった。

標準の設定では、最終実行から2秒以上経過したものであれば更新するという設定になっていたが、CMSとしてインストールしたサイトであれば、PHPのスクリプトの更新はほぼ無いので、最終更新から1日以上(60秒 ✕ 60分 ✕ 24時間 = 86400秒)に変更することにした。


設定の変更方法はphp.iniを開き、下記のパラメータを変更する

;opcache.validate_timestamps=1

opcache.validate_timestamps=1

に変更(冒頭のセミコロンを外す)


;opcache.revalidate_freq=2

opcache.revalidate_freq=84600

に変更(冒頭のセミコロンを外し、値を2から84600)して、サーバを再起動する。


Apache2のabコマンドやPageSpeed Insightsで確認してみたけれども、顕著な違いは見られなかったのでここでは結果は記載しないことにする。