WordPress のような動的な Web ページはキャッシュを利用する事で表示速度を向上できます。表示速度が早くなればユーザの離脱率は下がりますね。
WordPress であれば様々なキャッシュプラグインが用意されています。今回は W3 Total Cache というプラグインを試してみました。
https://wordpress.org/plugins/w3-total-cache/このプラグインでは以下の方法により WordPress サイトを高速化する事ができます。
- ページキャッシュ
- データベースキャッシュ
- オブジェクトキャッシュ
- ブラウザキャッシュ
- JS/CSS の Minify
上記キャッシュを有効活用する際に以下の設定を行う事ができます。
- ユーザエージェントでグループ化
- リファラーでグループ化
- CDN の利用
W3 Total Cache の設定
W3 Total Cache をインストールし、有効化すると管理画面に Performance の項目が表示されます。ここから設定を変更する事ができます。
Dashboard ではキャッシュの削除ができます。
General Settings で各項目のオン/オフと一部の設定が指定できます。
基本的には Genreral Settings で有効にしたい機能をオンにするだけで大丈夫でしょう。自分は Page Cache, Minify, Opcode Cache, Database Cache, Browser Cache を有効にしています。
それぞれの項目の画面ではより詳細な設定が可能です。
例えば Page Cache であればフロントページや FEED, SSL, 404 ページ などのページ毎にキャッシュの有効無効を切り替えられる他、ログインユーザに対してはキャッシュしないなどの設定やキャッシュする時間などを設定可能です。
Minify の画面では JS/CSS/HTML それぞれに対して Minify を行うかどうか、Minify の方法などを設定可能です。
.htaccess への書き込み
このブログ W3 Total Cache を有効にしたところ、各記事が 404 Not Fount の状態になってしまった。原因を調査したところ、W3 Total Cache が書き込む .htaccess のパスが変だった。
このブログでは /wp ではなくその上をルートディレクトリとしているので本来は /.htaccess を変更しないといけないのだが、W3 Total Cache が /wp/.htaccess へ書き込みをした為、正常に記事が表示されなくなっていたようです。
なので /wp/.htaccess を削除、/.htaccess へシンボリックを張ると解決した。
Simplicity で利用する場合の設定
WordPress のテーマである Simplicity でこのプラグインを利用した場合、ユーザーエージェントによるグループの設定を行っていても正常に反映されず、スマートフォン版とPC版とでキャッシュの出力が上手くいかない事があるようです。その場合、以下の記事にあるようにスマートフォンであるかどうかの判定を行う関数をテーマ内の functions.php に定義してやると良です。
https://nelog.jp/w3-total-cacheif (function_exists('w3_instance')) {
function is_mobile() {
$cache = w3_instance('W3_PgCache');
$group = $cache->_get_mobile_group();
return "high" === $group || "low" === $group;
}
}
Simplicity では lib/mobile.php 内に is_mobile が定義してあるのですが、function_exists により存在確認を行っている為、その前に上記のように is_mobile 関数を指定してやればそれが優先されます。