XserverにはWEBサイトを高速化する強力なツールに「Xアクセラレーター」があります。
XアクセラレーターはVer.1とVer.2があり、どちらを選べばいいかわからないという方もいると思います。
ここでは、Xアクセラレーターとは何か?やバージョン1、バージョン2の違い、サブドメインに適用する方法についてまとめています。
Xアクセラレーターとは何か?
Xserverの「Xアクセラレータ」はWebサイトを高速・安定化させるための機能です。次の2つの種類が用意されています。
具体的には、静的ファイルのキャッシュをサーバーに保持することで、サイトの高速化と同時アクセス数の拡張を行います。
生成したキャッシュは2分間保持されます。キャッシュ対象のファイルは以下の拡張子です。
.css .js .jpeg .jpg .gif .png .svg .svgz .wbmp .webp .ico .jng .bmp .3gpp .3gp .ts .mp4 .mpeg .mpg .mov .webm .flv .m4v .mng .asx .asf .wmv .avi .mid .midi .kar .mp3 .ogg .m4a .ra .woff .woff2 .ttf .otf .eot
Xアクセラレーターの注意点
Xアクセラレーターを使うときは以下の点に注意してください。
ユーザー毎に表示内容が異なるサイトでは効果が弱い
会員制サイトやショッピングサイトなどのように、訪問者ごとに表示内容が異なるようなページでは、当機能による高速化や負荷軽減の効果が出づらいことがあります。
キャッシュされたページが拡散される
.htaccessなどによるIP制限を行っている場合など、特定のユーザーや、特定の条件下でのみページを公開している場合、そのページがリバースプロキシ上にキャッシュされることで、意図しないユーザーがそれらのデータへアクセス可能となってしまう可能性があります。
リバースプロキシは、インターネットとサーバーの間に置かれ、クライアント(Webブラウザなど)からのリクエストを中継するサーバーのことです。いわば、サーバーの代理人として働くことで、様々なメリットをもたらします。
サブドメインに適用する方法
Xアクセラレーターの設定画面には、登録してあるメインのドメイン一覧しか表示されていません。
というのも、メインのドメインにXアクセラレーターを適用した場合、サブドメインに対しても自動的にXアクセラレーターが適用されるためです。
メインのドメインで問題がなくても、サブドメインで問題が出た場合は、メインのドメインのXアクセラレーターをVer.1またはオフにする必要があります。
Xアクセラレーターの種類(バージョンの違い)
XアクセラレータにはVer.1とVer.2の二種類があります。
Xアクセラレータ Ver.1 … 静的ファイルの高速化(キャッシュ)
Xアクセラレータ Ver.2 … 静的ファイルの高速化(キャッシュ)+PHPプログラムの高速化

Ver.2は進化系で、通常の静的ファイルのキャッシュに加えて、PHPプログラムの高速化も行います。
Ver.2にすることで、PHPプログラムの処理速度を最大20倍まで向上することができます。(※エックスサーバー内の同一構成サーバーに対する、Apache Benchコマンドのパフォーマンス比較によるもの)
なお、Ver.2が使用できるのはPHPのバージョンが「PHP 7.2.x 以上」です。
Ver.2のデメリット(使わない方がいい場合)
Ver.2の方が新しくて高速なので、Ver.2だけでいいのでは?と思うかもしれません。
ですが、Ver.2には次のようなデメリットがあります。
- php.iniの追加設定が無視される
- 他のPHPプログラムと干渉する可能性がある
php.iniの一部設定が無視される
Ver.2でPHP高速化の処理をする際に、php.iniの一部設定値を固定するため、任意で変更することができなくなります。
既に対象のパラメータを任意で設定している場合はその設定が無視されることになります。
この場合は、.user.iniに追記する必要があります。(書き方は後述しています)
他のPHPプログラムと干渉する可能性がある
Ver.2を適用することで、高速化の処理が利用中の他のプログラムと干渉する可能性があります。この場合、意図しない挙動やエラーが発生することがあります。
Ver.2にしたことで問題が発生する場合は、Ver1にするか、オフにする必要があります。
Ver.2利用時のphp.iniの対応
Ver.2を利用している場合、対象ドメインのフォルダに「.user.ini」というファイルが生成され、このファイルがphp.iniの役割を担うようになります。
本来サーバー全体に適用されるphp.iniの設定を、ディレクトリ毎に個別にできるようにしたのが.user.iniファイルです。
ただし、以下のパラメータについては.user.iniでも設定することはできません。サーバーの初期値が適用されます。
このリストに、PHPの設定変更でよく使う以下のような項目は含まれていないので、.user.iniで自由に設定することができます。
- memory_limit
- post_max_size
- upload_max_filesize
- max_input_vars
- max_execution_time
これらのパラーメタの詳細については下記をご参考ください。
設定 | 初期値 |
---|---|
allow_url_fopen | On |
allow_url_include | Off |
apc.coredump_unmap | Off |
apc.enable_cli | Off |
apc.enabled | On |
apc.gc_ttl | 3600 |
apc.mmap_file_mask | no value |
apc.shm_segments | 1 |
apc.shm_size | 64M |
apc.slam_defense | Off |
apc.ttl | 3600 |
apc.user_entries_hint | 4096 |
browscap | no value |
cgi.discard_path | 0 |
cgi.fix_pathinfo | 1 |
cgi.force_redirect | 1 |
cgi.redirect_status_env | no value |
disable_classes | no value |
disable_functions | no value |
doc_root | no value |
enable_dl | On |
expose_php | Off |
extension_dir | no value |
fastcgi.logging | 1 |
file_uploads | On |
hard_timeout | 2 |
imagick.progress_monitor | 0 |
imagick.skip_version_check | 0 |
ldap.max_links | Unlimited |
mail.force_extra_parameters | no value |
max_file_uploads | 20 |
mbstring.func_overload | 0 |
mysqli.allow_local_infile | On |
mysqli.allow_persistent | On |
mysqli.max_links | Unlimited |
mysqli.max_persistent | Unlimited |
mysqli.reconnect | Off |
mysqli.rollback_on_cached_plink | On |
opcache.blacklist_filename | no value |
opcache.enable_cli | Off |
opcache.enable_file_override | Off |
opcache.enable | On |
opcache.error_log | no value |
opcache.file_cache_consistency_checks | 1 |
opcache.file_cache_only | 0 |
opcache.file_cache | no value |
opcache.force_restart_timeout | 180 |
opcache.huge_code_pages | Off |
opcache.inherited_hack | On |
opcache.interned_strings_buffer | 8 |
opcache.lockfile_path | /tmp |
opcache.log_verbosity_level | 1 |
opcache.max_accelerated_files | 10000 |
opcache.max_file_size | 0 |
opcache.max_wasted_percentage | 5 |
opcache.memory_consumption | 128 |
opcache.opt_debug_level | 0 |
opcache.optimization_level | 0x7FFFBFFF |
opcache.preferred_memory_model | no value |
opcache.protect_memory | 0 |
opcache.restrict_api | no value |
opcache.save_comments | 1 |
opcache.use_cwd | On |
opcache.validate_permission | Off |
opcache.validate_root | Off |
pdo_mysql.default_socket | /var/lib/mysql/mysql.sock |
pgsql.allow_persistent | On |
pgsql.auto_reset_persistent | Off |
pgsql.max_links | Unlimited |
pgsql.max_persistent | Unlimited |
phar.cache_list | no value |
realpath_cache_size | 4096K |
realpath_cache_ttl | 120 |
sendmail_path | /usr/sbin/sendmail -t -i |
sqlite3.extension_dir | no value |
sys_temp_dir | no value |
upload_tmp_dir | no value |
user_dir | no value |
user_ini.cache_ttl | 300 |
user_ini.filename | .user.ini |
xmlrpc_errors | Off |
zend.signal_check | Off |
.user.iniの書き方
Xserverの場合、「post_max_size」や、「memory_limit」「upload_max_filesize」は1GBとなっており、かなり余裕がある設定になっています。
もし、利用可能な変数の上限数を変更する「max_input_vars」を変更したい場合は、.user.iniに追記する必要があります。
ファイルマネージャーを開き「.user.ini」を選択し、上部の「編集」をクリックします。

「更新」ボタンをクリックすれば完了です。

任意のわかりやすい場所に以下を追記します。
max_input_vars = 2000