レンタルサーバーのエックスサーバー(Xサーバー)で利用できる高速化設定を見直し、WordPressサイトの表示速度やPHPプログラムの処理速度を改善する方法を2024年版としてまとめました。この記事では、Xアクセラレータ、サーバーキャッシュ、ブラウザキャッシュ、XPageSpeed、OPcache JITについて、実際に試した設定や不具合も交えてご紹介します。
Xサーバーの高速化設定について
レンタルサーバーを契約してウェブサイトを運営する際には、WordPress(ワードプレス)を利用することも多いと思いますが、プラグインやGoogleアドセンスの広告を導入していくと、ページの表示が極端に遅くなってしまうことがあります。
ウェブページの読み込みが遅くなると、表示を待ちきれなかったユーザーが離脱しやすくなります。Googleが紹介した調査では、モバイルページの読み込み時間が1秒から3秒になると離脱する確率が32%、1秒から5秒では90%、1秒から6秒では106%増加すると報告されています。
特に近年は格安SIMの人気が高まり、データ通信量を抑えたページの読み込みが求められるほか、通信量を気にせず利用できる低速モードを使う人にとっても、軽量で素早く表示されるウェブサイトの制作が重要になってきました。
筆者はGoogle検索でも評判の良かったエックスサーバーを契約しているのですが、同サービスにはウェブページの表示を高速化する機能が標準で用意されており、サーバーパネルから設定できます。なかには、機能を無効にした場合と比較してWordPressの処理速度が最大10倍になったと案内されている機能もあり、表示速度の改善はSEO(検索エンジン最適化)の面でも重要です。
ここからは、WordPressサイトの読み込みを高速化する標準機能に加え、PHP 8.0以降で利用でき、エックスサーバーでは標準で無効になっているOPcache JITの設定についてもご紹介します。
GZIPやBrotli圧縮は標準で利用できる
以前は.htaccessにコードを記述し、HTMLやCSSなどのテキスト系ファイルをGZIPで圧縮してウェブサイトの読み込みを高速化する方法が有効とされていましたが、筆者の環境では、いつの間にかGZIPよりも高い圧縮率が期待できるBrotli(ブロトリ)圧縮が有効になっていました。
少なくとも今回確認したエックスサーバーの環境では、GZIPやBrotli圧縮を有効にするためのコードを別途記述する必要はありませんでした。
エックスサーバーはもともと応答が速いと感じていたため、圧縮方式の変化による違いに気付かなかったのかもしれません。
PHPのバージョンは安定版がオススメ
当時、エックスサーバーはPHP 8.2にも対応していましたが、筆者の環境ではWordPress本体やプラグイン、あるいはサーバー側との組み合わせに問題があったのか、ページの読み込み遅延や504エラーなどが発生していました。
すべてのページで発生する問題ではなく、ページによって症状が出たり出なかったりする不具合だったため、処理速度だけを追い求めるよりも、WordPressやプラグインとの互換性を確認し、安定して動作するPHPのバージョンを選んでユーザーの離脱を防ぐ方が望ましいと感じました。
Xアクセラレータは可能であればVer.2で高速化
Xサーバーの高速化設定では、Webサイトを高速・安定化させるための機能である「Xアクセラレータ」が利用できます。
- Xアクセラレータ Ver.1… 静的ファイルの高速化(キャッシュ)
- Xアクセラレータ Ver.2 … 静的ファイルの高速化(キャッシュ)+PHPプログラムの高速化
静的ファイルの高速化は、画像や動画などのファイルをキャッシュとしてサーバー側に保持し、ウェブサイトの表示高速化と同時アクセス数の拡張を図る機能です。
Xアクセラレータ Ver.2では、静的ファイルのキャッシュに加えてPHPプログラムの処理も高速化され、PHP 7.2以降の対応バージョンで、同一構成のサーバーを使ったエックスサーバーのベンチマークでは最大20倍の処理速度が案内されています。
WordPressで必ず20倍の速度向上が得られるという意味ではありませんが、対応環境であればXアクセラレータ Ver.2を有効にすることで、ウェブサイトの表示速度の改善が期待できます。
ただし、Ver.2ではPHPの処理方式にも変更が加わるため、WordPressのバージョンやテーマ、プラグインとの組み合わせによっては表示崩れなどの不具合が起こる場合があります。有効にした後は、管理画面と公開ページの両方を確認しておくと良いでしょう。
実際に筆者の環境では、PHP 8.2.9とXアクセラレータ Ver.2の組み合わせで、一部のページに504エラーや管理画面のレイアウト崩れが発生していましたが、PHP 8.1.22に戻したところ安定するようになりました。
サーバーキャッシュ設定もONにして高速化
「サーバーキャッシュ」を有効にすると、サーバー上にキャッシュが作成され、ウェブサイトの表示高速化と同時アクセス数の拡張が期待できます。ただし、すべてのファイルやレスポンスが無条件にキャッシュされるわけではなく、キャッシュの対象や保存期間には条件があります。
また、ECサイトやログインしたユーザーにのみコンテンツを表示するサイトなど、特定のユーザーや環境にだけ公開するデータがある場合には注意が必要です。本来は公開を制限しているデータがキャッシュされ、意図しないユーザーからアクセスできる状態になる可能性があるため、サイトの構成に応じて設定を確認してください。
ブラウザキャッシュ設定もONにして転送量を削減
ブラウザキャッシュ設定では、ブラウザ側でのキャッシュ利用を指示するレスポンスヘッダ(Expires、Cache-Controlヘッダ)を付加し、同じファイルへ再アクセスした際に保存済みのキャッシュを利用することで、表示速度の向上やデータ転送量の削減が期待できます。
表示崩れや更新した内容が反映されないといった問題が起こらなければ、CSSやJavaScriptを含むすべての静的ファイルを対象とする推奨設定をONにしておくと良いでしょう。
XPageSpeed設定は特に慎重な設定が必要
もう一つの高速化機能であるXPageSpeedも、慎重に設定する必要があります。筆者の環境では、PHPやWordPressのバージョンとの組み合わせによって、モバイルページでスクロールができなくなったり、ハンバーガーメニューをタップしても反応しなくなったりする不具合が発生したことがありました。
特にCSSやJavaScriptの遅延読み込みは、ページのレイアウトや操作性に影響する場合があるため注意が必要です。
実際に試した中で比較的不具合が少なかった設定は、以下のとおりです。
| 設定項目 | 説明 | 状態 |
| 画像最適化 | 最適な画像タイプへの変換と画像サイズを圧縮することで画像の読み込み速度を向上させます。 | OFF |
| 画像遅延読み込み | 画像の読み込みをコンテンツ表示後に行うことでページの読み込み速度を向上させます。 | ON |
| CSS最適化 | 複数のCSSをまとめてコンテンツ内容に適応した形に変換することでページの読み込み速度を向上させます。 | ON |
| CSS遅延読み込み | 一部のCSSの読み込みをコンテンツ表示後に行うことでページの読み込み速度を向上させます。 | ON |
| JavaScript最適化 | 複数のJavaScriptをまとめてコンテンツ内容に適応した形に変換することでページの読み込み速度を向上させます。 | ON |
| JavaScript遅延読み込み | JavaScriptの読み込みをコンテンツ表示後に行うことでページの読み込み速度を向上させます。 | OFF |
画像最適化については、すべての画像をあらかじめWebP形式で書き出してからアップロードしていたため、設定を無効にしておきました。
XPageSpeedの画像最適化だけでなく、画像圧縮プラグインを利用した際にも、画質の劣化やカラープロファイルが失われることによる色の変化が見受けられたため、手間はかかっても、色を確認しながらsRGBで書き出した画像を用意する方が望ましいと感じました。
CSS遅延読み込みについても、WordPressのバージョンによってはスクロールできなくなる不具合が発生していましたが、その後は解消しました。一方、JavaScript遅延読み込みは特にファーストビューで問題が起こりやすく、ハンバーガーメニューや検索フォームが表示されない不具合が発生しました。
どちらも問題がなければONにして構いませんが、筆者の経験では特にJavaScript遅延読み込みで不具合が発生しやすいため、実際の表示や操作を確認しながら設定することをおすすめします。
OPcache JITでも高速化が可能だけど不具合もあり
エックスサーバーでは、PHP 5.1以降でFastCGI、PHP 5.5以降でOPcacheが利用でき、対応するPHPバージョンでは標準で有効になっています。これらはPHPプログラムの高速化を目的とした機能で、サーバーパネルから個別にON・OFFを切り替えることはできません。
「FastCGI」とは、PHPを実行するプロセスを再利用することで、リクエストのたびにプロセスを起動・終了する負荷を抑え、PHPプログラムの処理を高速化する仕組みです。
また、「OPcache」は、PHPプログラムを実行する際に生成される中間コード(オペコード)をキャッシュし、次回以降の処理で再利用することで、PHPの実行に伴うCPU負荷の軽減や高速化を図る拡張機能です。
一方、エックスサーバーのマニュアルには、JITについて以下の画像のような案内が記載されていました。
PHP 8.0以降では、OPcacheの機能として「JIT(Just-In-Time Compilation)」が利用できるようになりました。
JITは、PHPプログラムの実行時に一部の処理を機械語へコンパイルすることで、従来のPHP実行方式よりも高速化を図る仕組みです。
特に計算量の多いプログラムでは大幅な性能向上が期待できますが、データベースへのアクセスやファイルの読み込みが多い一般的なWebサイトでは、必ずしも大きな効果が得られるわけではありません。
エックスサーバーではJITが標準で無効になっており、有効化する場合はphp.iniの設定変更が必要です。
OPcache JITの設定方法
エックスサーバーではOPcacheが標準で有効になっていますが、JITは初期設定で無効になっています。
筆者の環境では、php.iniに以下の設定が記載されていました。
[Zend Optimizer]
zend_extension = opcache.so
opcache.jit = off
「zend_extension = opcache.so」はOPcacheの拡張機能を読み込むための設定で、「opcache.jit = off」はJITを無効にする設定です。
JITを有効にする場合は、OPcacheの読み込み設定をそのまま維持し、以下のようにJITの動作モードとメモリ領域を指定します。
[Zend Optimizer]
zend_extension = opcache.so
opcache.jit = tracing
opcache.jit_buffer_size = 128M
「opcache.jit = tracing」は、実行頻度の高い処理経路を最適化するトレーシングJITを有効にする設定です。「on」も同じ動作モードを指定する有効な設定値になります。
「opcache.jit_buffer_size = 128M」は、JITが生成した機械語を保存するために128MBのメモリ領域を確保する設定です。
なお、JIT用のメモリ領域はPHPの起動時に確保されるため、PHPの実行環境によっては設定が反映されない場合があります。
設定変更後はphpinfoなどで、JITが実際に有効になっているか確認することが重要です。
phpinfo.phpでJITの動作状況を確認
JITを設定した後は、実際に機能が有効になっているか確認することが重要です。
PHPの設定情報を確認する方法として、phpinfo()関数があります。
確認用のPHPファイルには、以下の内容を記述します。
<?php
phpinfo();
?>
この内容を「phpinfo.php」というファイル名で保存し、public_htmlフォルダーにアップロードすると、ドメイン名の末尾に「/phpinfo.php」を付けてPHPの設定情報を閲覧できます。
確認する際には、「Zend OPcache」の項目からJITの有効状態や設定値を確認します。
単に「opcache.jit」が「tracing」や「on」になっているだけでは、JITが実際に動作しているとは限りません。
JIT用のメモリ領域が確保されていることや、JITの実行状態も確認する必要があります。
また、phpinfo.phpにはサーバーの設定情報や環境情報が表示されるため、外部から自由にアクセスできる状態で公開することはおすすめできません。
確認が必要な場合はアクセス制限を設け、作業が終わったら速やかにファイルを削除してください。
Xアクセラレータ Ver.2とJITの組み合わせで不具合が発生
2024年当時、WordPress管理画面のレイアウト崩れや、ページを閲覧できなくなるFatal Errorの原因を調べていたところ、筆者の環境ではXアクセラレータ Ver.2とJITの設定を組み合わせた際に不具合が発生していました。
その後、JITの設定を外したところ不具合が改善したため、JITの設定が問題に関係していた可能性があると考えています。
ただし、JIT自体の不具合だったのか、Xアクセラレータ Ver.2によるPHPの実行方式や設定の制約が影響していたのかまでは特定できていません。
特に、Xアクセラレータ Ver.2ではPHPの設定項目によって変更可能な範囲が異なるため、JITの設定値を変更しただけで、実際にJITが動作していたとは限らない点にも注意が必要です。
このため、Xアクセラレータ Ver.2とJITの組み合わせに必ず不具合があるとは断定できませんが、筆者の環境ではJITの設定を外すことで改善したという結果になりました。
また、エックスサーバーがJITを標準で無効にしている理由についても、具体的な理由までは確認できていないため、不具合を回避する目的で無効化されているとは断定できません。
WordPressではJITによる高速化の効果が小さい場合もある
PHPのJITは、CPUによる計算処理が多いプログラムでは高い効果を発揮する一方、一般的なWebアプリケーションでは性能向上が限定的になる場合があります。
例えば、WordPressではPHPによる処理だけでなく、データベースへのアクセス、ファイルの読み込み、外部サービスとの通信など、さまざまな処理が実行されています。
JITが直接高速化できるのは主にPHPプログラムの実行処理であり、データベースやネットワークの待ち時間を短縮するものではありません。
実際に海外で行われたPHPのベンチマークでも、計算処理の多いプログラムではJITによる大幅な高速化が確認されている一方、WordPressなどの一般的なWebアプリケーションでは性能向上が小さいという検証結果もあります。
また、JITには専用のメモリ領域が必要であり、プログラムを機械語へコンパイルする処理にも負荷が発生します。
そのため、利用するPHPのバージョンや実行環境、プログラムの処理内容によっては、JITを有効にしても期待したほど高速化しない場合があります。
少なくとも筆者の環境では、JITの設定を利用していた際に管理画面の表示不具合やFatal Errorが発生し、設定を外したことで改善するという経験をしました。
JIT自体が不具合の直接的な原因だったかどうかは断定できませんが、一般的なWordPressサイトでは高速化の効果が必ずしも大きいわけではないことを考えると、不具合のリスクを取ってまで無理に有効化する必要はないと思います。
なお、OPcacheとJITは異なる機能であり、JITを無効にしても通常のOPcacheによる高速化は引き続き利用できます。
個人的には、JITによるわずかな速度向上を追求するよりも、PHPの設定を適切に保ち、サイトの安定性を優先する方がメリットは大きいと考えています。
高速化設定後のPageSpeed Insightsのスコア
WordPressテーマのTCDでは、タイトルの<h1>タグの扱いや表示方法を思いどおりに調整しにくい部分もあり、ユーザー補助やSEOのスコアはあまり上がらない傾向があるのですが、Googleアドセンスやアフィリエイトリンクを設置し、画像を15枚掲載しているページで、モバイル版のPageSpeed Insightsのパフォーマンススコアが81点になりました!
これ、すごくないですか?
正直なところ、自分でも驚いているのですが、以前使用していたAMP for WPで出力したページに近いスコアを、非AMPページで叩き出しているのです。
デスクトップ版ではパフォーマンススコアが95点と、満点に近い数値が出ていました。
設定前のスコアを記録しておらず、比較画像を用意できなかったのが少々無念ではありますが、ここまでのスコアが出たことから、高速化設定には大きな効果があったのではないかと感じています。
この設定にたどり着くまでは少々大変でしたが、エックスサーバーでWordPressの表示速度を改善したい方の参考になれば幸いです。実際に設定する際は、不具合がないか確認しながら試してみてください!
スコアを計測したページは、以下のリンクカードからご覧いただけます。タイヤ交換に関する記事ですので、自動車を所有している方にはおすすめです。
また、エックスサーバーでは、ハードウェアが増強された新しいサーバーへ移行しておくのもおすすめです。
















この記事へのコメントはありません。