エンタープライズ用途での利用が増えている「WordPress」の高速化チューニングテクニックを解説する本連載。今回は、「1000倍高速化」を目指すチューニングテクニックの総仕上げです。「NginxのFastCGIキャッシュを導入」して、約1127倍まで高速化します。
前回は、WordPressのプラグイン「WP SiteManager」を用いたページキャッシュを導入して、チューニングをしない初期状態から「約228倍」までWordPressを高速化できました。
今回は、「WordPress1000倍高速化チューニング」の総仕上げを行います。「NginxのFastCGIキャッシュ」を導入して、「約1127倍」までチューニングしていきましょう。
まず、本テクニックはこれまで解説してきたチューニングの続きとなるので、この記事からご覧の方は、連載バックナンバーから、「約228倍」まで高速化チューニングをしておいてください。
チューニング内容 | ページのロード時間 (デフォルト環境比) |
1秒当たりの同時アクセス数 「Requests per second」(デフォルト環境比) |
---|---|---|
デフォルト環境 | 176ms | 11.24 |
APCの導入 →チューニング方法をおさらい |
70ms(約251%) | 29.20 |
OPcache+APCuを導入 →チューニング方法をおさらい |
66ms(約266%) | 30.51 |
MariaDBの設定を調整 →チューニング方法をおさらい |
64ms(約275%) | 31.82 |
翻訳アクセラレータを導入(キャッシュ) →チューニング方法をおさらい |
53ms(約332%) | 39.29 |
翻訳アクセラレータを導入(翻訳を停止) →チューニング方法をおさらい |
36ms(約488%) | 56.78 |
gzip圧縮を用いる →チューニング方法をおさらい |
35ms(約502%) | ─ |
Tunedの調整 →チューニング方法をおさらい |
34ms(約517%) | 58.47 |
event MPM+php-fpm構成に変更 →チューニング方法をおさらい |
33ms(約537%) | 60.79 |
PHP 5.6+OPCache+APCuを導入 →チューニング方法をおさらい |
32ms(約550%) | 61.84(約550.2%) |
PHP 7+OPCache+APCuを導入 →チューニング方法をおさらい |
18ms(約977.7%) | 148.08(約1250.6%) |
HHVMを導入 →チューニング方法をおさらい |
16ms(約1100%) | 195.05(約1690.8%) |
Nginxを導入(Nginx+PHP 7) →チューニング方法をおさらい |
16ms(約1100%) | 151.07(約1344%) |
Nginxを導入(Nginx+HHVM) →チューニング方法をおさらい |
16ms(約1100%) | 205.20(約1825.6%) |
WP SiteManagerでページキャッシュを導入 →チューニング方法をおさらい |
(測定不能) | 2566.17(約22830%) |
「WordPress1000倍高速化チューニング」の総仕上げをしていきましょう。今回はミドルウェアのページキャッシュである、Nginxの「FastCGIキャッシュ」を導入することで高速化します。
こちらは、「WordPressのパーマリンクが有効であることを前提」に実施します。パーマリンクの設定は、WordPressの管理画面にログインして、「設定」→「パーマリンク設定」の共通設定で「日付と投稿名」を選択して、「変更を保存」を行ってください。
コンソールに戻って、Nginxの設定ファイルを修正します。FastCGIキャッシュの基本設定のため、「/etc/nginx/nginx.conf」を以下のように修正します。
(略) http { include /etc/nginx/mime.types; default_type application/octet-stream; log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log /var/log/nginx/access.log main; sendfile on; #tcp_nopush on; keepalive_timeout 3; gzip on; server_names_hash_bucket_size 128; fastcgi_cache_path /var/cache/nginx/wordpress levels=1:2 keys_zone=wpcache:30m max_size=512M inactive=600m; include /etc/nginx/conf.d/*.conf; }
「/etc/nginx/conf.d/http.conf」に具体的なキャッシュの条件を記述します。
(略) location ~ [^/]\.php(/|$) { fastcgi_split_path_info ^(.+?\.php)(/.*)$; if (!-f $document_root$fastcgi_script_name) { return 404; } fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; set $do_not_cache 0; if ($request_method = POST) { set $do_not_cache 1; } if ($query_string != "") { set $do_not_cache 1; } if ($http_cookie ~* "comment_author|wordpress_[a-f0-9]+|wp-postpass|wordpress_no_cache|wordpress_logged_in") { set $do_not_cache 1; } if ($request_uri ~* "(/wp-admin/|/xmlrpc.php|/wp-(app|cron|login|register|mail).php|wp-.*.php|/feed/|index.php|wp-comments-popup.php|wp-links-opml.php|wp-locations.php|sitemap(_index)?.xml|[a-z0-9_-]+-sitemap([0-9]+)?.xml)") { set $do_not_cache 1; } fastcgi_cache wpcache; fastcgi_cache_key "$request_method:$scheme://$host$request_uri"; fastcgi_cache_valid 200 60m; fastcgi_no_cache $do_not_cache; fastcgi_cache_bypass $do_not_cache; add_header X-F-Cache $upstream_cache_status; } (略)
Copyright © ITmedia, Inc. All Rights Reserved.