OPcachePHPブートアップの最適化

たとえば、 WordPressJoomla、またはLaravelに基づいており、ユーザー固有のコンテンツがないWebサイトの場合、すべてのページを静的HTMLキャッシュに保持し、バックエンドで変更が行われたときにのみ手動(または自動)でキャッシュを再生成することをお勧めします。 ただし、ページにセッションとCookie、または言語と場所に依存する動的コンテンツが含まれている場合は、 OPcacheが適しています。


上記の3つのシステムすべてのいわゆる起動時間は、新しくインストールされたCentOS7サーバー(SSDおよびPHP 7.1を使用)では100ミリ秒を超えます。 PHPスクリプトを実行するたびに、実行時にバイトコードにコンパイルする必要があります。 OPcacheは、このバイトコードのキャッシュを実装するようになりました。次のリクエストで同じPHPスクリプトが実行された場合、再コンパイルする必要はありません。 OPcacheを有効にした後、以下の設定を行います:

9006cec6c5d3d2498ee26c5bfd91590a

実行時間(10回の実行の平均)が大幅に短縮されました:

WordPress 4.7.4 Joomla 3.7 Laravel 5.4
OPcacheなし 295ミリ秒 201ミリ秒 110ミリ秒
OPcache付き 54ミリ秒 59ミリ秒 13ミリ秒
因子 5,5 3,5 8,5

Validate_timestampsを0に設定し、同時にrevalidate_freqを1日の期間に設定したため、キャッシュが自動的に再構築されることはほとんどありません(これは意識的に手動で行います)。 小さなgitフックを使用すると、PHPスクリプトがすべての「プル」で実行されます。 フックをアクティブにする方法:

a1678610c8b4c7db5997375944183830

a1678610c8b4c7db5997375944183830

次のヘルパー関数は、個々のコード部分(または実行時間全体)を測定するのにも役立ちます。:

085f4291bbcc4e8a64bbea951ff49ab9

ステータス、使用済みメモリ、キャッシュされたファイル数などの役立つ情報を取得する場合は、このPHP関数を使用します:

3f6309d04bc7e48dd909859321b96209

ローカル開発環境(通常は推奨されません)でOPcacheの恩恵を受けるために、トリックを使用します。

OPcacheは、OPcacheモジュールがインストールされていて、opcache.enable設定が明示的に設定されていないすべてのサーバーでアクティブです。 そのままにしておきます。 php.iniではopcache.validate_timestamps = 1のみを設定します。これは、opcache.revalidate_freq = 2を意味します。これは、OPcacheがすべてのプロジェクトでほぼ継続的に再検証されることを意味します。 OPcacheを永続的にアクティブ化するプロジェクトについては、プロジェクト関連を設定します .htaccessで次の設定:

1dd64a3f2fe4425b29b1409410fe3fc0

次に、Webサーバーを再起動し、次のスクリプトを作成します:

91fb5289160e410607c9ea89112a575b

このスクリプトは、キャッシュをクリアし、同時に再構築します。 次に、お気に入りのエディターVSCodeでワークスペース関連のRunOnSaveコマンドを設定します。:

91fb5289160e410607c9ea89112a575b

バック