LiteSpeedCacheのキャッシュが無効になる理由と解決方法

この記事には広告を含む場合があります。記事内で紹介する商品を購入することで、当サイトに売り上げの一部が還元されることがあります。

せっかくインストールしたLiteSpeedCacheが無効(x-litespeed-cache: miss)となってしまい、サイトを高速化できなくて困っていませんか?

公式サイトやいろいろなブロガーサイトと同じ設定方法をやっているのにも関わらず有効にならない!

じつは私もその一人でした。

2日間解析してその原因が判明し、解決策をこうじて有効化できました。

私の場合の原因を先に述べると、サブディレクトリにワードプレスをインストールしていたことが原因でした。

 (例: public_html/ドメイン名/wp) 

サブディレクトリにワードプレスをインストールしている方は私同様にひと手間しないとLiteSpeedCacheが有効(x-litespeed-cache: hit)になりません。

それでは私が行った解決方法を紹介していきます。

LiteSpeedCacheが無効な状態を示す「x-litespeed-cache: miss」

前提条件

私が今回、検証した環境や問題の前提です。

  • レンタルサーバは「mixhost」を使っている
  • ワードプレスのインストール先は「ドメイン/サブディレクトリ配下」である
  • 「LiteSpeedCacheプラグイン」のキャッシュが有効にならないで困っている

同様の条件のかたであれば悩みを解消できるはずです。

レンタルサーバがmixhostでなくてもLiteSpeed系のサーバーを扱っているレンタルサーバなら条件に合致します。

キャッシュ適応前のサイト表示速度

私はgoogleのプラグインである「SiteKit」をインストールしています。

このプラグインのダッシュボード画面にはサイト全体の改善提案がされるのですがページ速度が遅いという警告をうけました。

何秒なら遅いのか?

私は国内の大手企業の性能試験をやったことあります。その時は画面描画に3秒という性能目標を定めている開発が多かったです。

それでは個別のページについて速度改善前の状態での速度を計測してみます。

速度計測にはchromeブラウザのデベロッパーツールを使いました。

そのさい、画像をたくさん使っている遅くなりそうな記事を選んで速度を計測してみました。

キーボードのF12でデベロッパーツール使えます

この記事の画面表示にかかった時間は

1.44s (1.4秒ということです)

LiteSpeedCacheの導入

ワードプレスの高速化には技術的なこともありますが

まずは労せず高速化が可能なキャッシュ系プラグインを検討しますね。

ワードプレスにはキャッシュ系のプラグインがたくさんあります。

有名なキャッシュプラグインといえば「WP Super Cache」、「W3 Total Cache」、「WP Fastest Cache」などです。

このうち、どれを選べばいいのか迷います。どのプラグインが自分のサイトに最適なのかを検証するのも手間です。

もしも、あなたのレンタルサーバがmixhostならば、「LiteSpeed Cache」というキャッシュプラグインがおススメです。

これは「LiteSpeed系のサーバー」でのみ使える専用のキャッシュプラグインです。

「LiteSpeed系のサーバー」とはmixhostのレンタルサーバが該当します。

そのため、mixhostの利用者でキャッシュプラグインはまず先に「LiteSpeed Cache」を使うのが無難で効果の高い選択です。

キャッシュプラグイン「LiteSpeed Cache」のインストール

「プラグインを追加」からLiteSpeed Cacheを検索してインストールします。ここまでは悩むことはないです。

LiteSpeed Cacheをインストールして有効化します。

まずは推奨設定をする

mixhostの公式ヘルプを見ながら、推奨設定値をしていきます

私が推奨設定と違う設定にした箇所

「ログインしたユーザをキャッシュ」これについてはオフにした方が良さそうです。自分自身をキャッシュ対象にするとデザイン変更のたびにプライベートブラウザを使う必要があるからです。

しかし、キャッシュが有効となっているのか否かを自分が体感するにはこの設定をオンにしておかないと体感できません。キャッシュが有効化され速度が改善された後にオフにすればよいと思います。

LiteSpeed Cacheの有効化の確認方法

①ブラウザで確認する方法

そしてLiteSpeed Cacheが有効かを確認する方法としてデベロッパーツールで「Response Headers」を確認します。

『x-litespeed-cache: miss』と表示されている場合や、そもそも項目が存在しない場合等はLiteSpeed Cacheが正しく設定されていない状態である可能性がございます。

mixhostヘルプ

そして、自分のサイトを確認してみたら「x-litespeed-cache: miss」となっており、有効になっていない。。。。

②チェックサイトで確認する方法

英語版のLiteSpeedのヘルプを見たらもっと簡単な確認方法がありました。

LSCache Check Toolを使います。

ここにアクセスして確認できます

キャッシュの確認をしたいURLを入力してチェックボタン押下
これを見る限りキャッシュが適応されていない

LiteSpeedCacheが無効になる理由と解決方法

サブディレクトリ運用のワードプレスだとLiteSpeedCacheが有効にならない

原因判明するまで2日費やしました。

いろいろ試したのですが、どうやらワードプレスをインストールしたのがドメイン直下ではなく、サブディレクトリ (例: public_html/ドメイン名/wp)  にしたことでLiteSpeedCacheが有効にならないといことが判明しました。

どうゆうことかというと、LiteSpeedCacheはサーバ上の「.htaccess」ファイルを編集して動作します

サブディレクトリでワードプレスを運用している場合は

「.htaccess」ファイルがドメイン直下とサブディレクトリ直下にそれぞれ置かれており、ファイルが2つあると思います。

ドメイン直下:public_html/ドメイン名/.htaccess

サブディレクトリ直下:public_html/ドメイン名/wp/.htaccess

Litespeed プラグインはドメイン直下ではなく、そのサブディレクトリ直下の .htaccess のみを管理します。

キャッシュを有効にするにはドメイン直下の .htaccess を編集しなければいけないのです。

解決方法

暫定対処(一時的な解決方法)

サブディレクトリ直下の「.htaccess」に記載されている「# BEGIN LSCACHE … # END LSCACHE」の部分をコピーして、ドメイン直下の「.htaccess」に追記します。「# BEGIN WordPress」セクションの前に挿入します。

これで問題は解決しますが、Litespeed を非アクティブ化して再アクティブ化すると、毎回これを手動で実施する必要があります。

それは手間ですし、忘れてしまうこともあるのでこのやり方はおススメしません。

恒久的な解決策

今回の問題はLiteSpeed プラグインが編集するべき「.htaccess」が違うということです。

そのため、正しい「.htaccess」のパスをLiteSpeed プラグインに教えてあげればよいのです。

「.htaccess」のパス設定方法は「LiteSpeed プラグイン」->「ツールボックス」->「[3] .htaccess の表示」タブで説明されていました。

上記画像ではhtaccessのパスが/wp/直下になっているのがわかると思います。

これをドメイン直下のパスに変更します。

そのためには「wp-config.php」に対して、次のコードを手動で追加して、フロントエンドのhtaccess パスをドメイン直下のパスに変更してあげるのです。mixhostのCパネルのファイルマネージャーからワードプレスインストール先のフォルダまで進み、「wp-config.php」を編集します。

これ以降は自己責任で

wp-config.phpはワードプレスが動作するために大事なファイルです。このファイルを直接編集するのはサイトが表示されなくなったり不具合が発生する危険性を伴います。編集は慎重に。そしてバックアップも取ってください。

wp-config.phpを編集したくない場合は、別のキャッシュプラグインの導入を考えた方が良いかもしれません。

/* mixhostの記載例 */
defined("LITESPEED_CFG_HTACCESS") || define("LITESPEED_CFG_HTACCESS", "/home/ユーザ名/public_html/ドメイン名/.htaccess");

htaccessの末尾に追記して保存します

そしてワードプレス側のLiteSpeed プラグインのツールボックスに戻ると、htaccessのパスがドメイン直下に変更されていました。

参照パスは変更されましたが、まだドメイン直下のhtaccessにプラグインの設定内容が反映されていないため

キャッシュページで「設定を保存」ボタンを押下してhtaccessに設定内容を改めて出力させる必要があります。

ドメイン直下のhtaccessにプラグインの内容が追記されたことを「LiteSpeed プラグイン」->「ツールボックス」->「[3] .htaccess の表示」タブで確認できました。

これで完了です。

さて、キャッシュが有効になるかを見ていきましょう。

このとき、「ログインしたユーザーをキャッシュ」をONの設定にしていないとワードプレスにログインしている自分自身にはキャッシュが無効となってしまうので、キャッシュ有効を確認できません。

一時的に「ログインしたユーザーをキャッシュ」をONにして確認しましょう。

初回表示ではページがキャッシュされていないので、2回以上チェックボタンを押す必要があります。

私の場合はタイムラグがあったためか、数回チェックボタン押す必要がありました。

見事にキャッシュが有効なことを示す「x-litespeed-cache: hit」の文字が!

キャッシュの成功です。

プラグインを無効⇒有効化したときはどうなるか

プラグインを無効にし再度有効化したとき、htaccessのパスの変更(ドメイン直下にした変更)はそのまま保存されていますが、htaccessファイルの中身に設定値が出力されていない状態です。この時もキャッシュページで「設定を保存」を押下すれば、ドメイン直下のhtaccessに設定値が出力されます。再度有効化したときはこれを忘れずに実行してください。

キャッシュ適応後はサイト表示が180倍速くなった!

キャッシュが有効化となったので改善後の速度を計測していきましょう。

速度計測する時は設定画面で「ログインしたユーザーをキャッシュ」をONにしましょうね。

8ms( 8ミリ秒)!爆速!

この結果には驚きました。

キャッシュ適応前は1440msだったので、LiteSpeedCacheを導入しただけで180倍の速度改善効果がありました。

別案:テンプレートにSANGOを使っているならば

ここまでLiteSpeedCacheを説明してきましたがワードプレスのデザインテンプレートにサルワカさんの「SANGO」を使っているならばSANGOの機能に搭載されたキャッシュ機能が使えます。

このブログはSANGOを使っているため、そちらも検証してみました。

こちらも驚くべき結果でした。

「88ms」

1.44s(秒)の速度だったページが88ms(ミリ秒)と速度が16倍向上しました。

LiteSpeedCacheほどの速度改善はされませんでしたが、SANGO優秀です。

wp-config.phpを編集したくない場合かつSANGOユーザはこれで十分な速度改善ではないでしょうか。

さいごに

今まではプラグインをインストールして有効化したらすぐに効果があると勘違いしていましたが、きちんと有効になっているかを確認して、対処する大事さを今回学びました(3年前から作っている別ブログも今回と同じ事象でキャッシュが有効になっていない状態でしたが気付きませんでした)。

めでたく、キャッシュが有効化され速度が大幅に改善したのでLiteSpeedCache最高です。

爆速のワードプレスを手に入れましょう。

【参考になったワードプレスサポートサイトのページ】

https://wordpress.org/support/topic/does-not-work-when-wp-installed-in-subfolder-subdirectory/

https://wordpress.org/support/topic/cache-always-misses/