エンタープライズ用途での利用が増えている「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.
Linux �ス�ス OSS 髫ェ蛟�スコ荵斟帷ケ晢スウ郢ァ�ュ郢晢スウ郢ァ�ー