Cocoon & grayish の LiteSpeedCache プラグイン設定の最適化

show_face_white_kitten Misc
show_face_white_kitten
記事内に広告が含まれています。

Cocoon テーマ & grayish スキン

このブログは WordPress の Cocoon テーマと grayish スキンを使用しています。立ち上げ直後の記事はこちら。

grayish スキンのグレーが基調の柔らかい雰囲気が気に入っています。それに合わせて、フロントページからアイキャッチ画像まで白猫で揃えて、これから先も同様のアイキャッチ画像を生成して使用していこうと考えています。

私の使用しているロリポップ!レンタルサーバーでは、WordPress をインストール直後から LiteSpeed Cache プラグイン (以下、LSCache と省略) を使用できるようになっています。以前から、その初期設定がどのようになっているか、興味を持っていました。

今回の記事は、「新しきを学ぶ」事の1つめの記事として、

  • LSCache プラグイン最適化の際の PageSpeed Insights (以下 PSI と省略) のスコアの推移
  • Cocoon テーマ & grayish スキンの LSCache プラグインの最適化方法
  • ロリポップ!レンタルサーバーの LSCache プラグインの初期設定

の三つについて紹介します。なお、

  • LSCache プラグインのバージョンは Ver.6.1 です
  • PSI のスコアや表示乱れの確認は、Chrome のシークレットモードで実施しています

ロリポップ!レンタルサーバーの LSCache の初期設定については、最後に補足として一覧で載せています。

PSI のスコアの推移

はじめに、Cocoon テーマ & grayish スキンの組み合わせで LSCache を調整していく各段階で、PageSpeed Insights のスコアの変化をグラフにしてみました。

PSI スコアの推移

PC については、特に設定をしなくても 90 以上を維持できています。

Mobile は初期段階では 46 でしたが、最適化を進めた事で、現在では 99 ~ 100 に達して、これを維持できています。

Mobile の白抜き部分は、画面表示の乱れが発生している箇所です。これを防止しながら、PSI のスコアを向上させる方法について、順を追って説明します。

LSCache 最適化

LSCache プラグインの初期状態では、Mobile 46 PC 96 でした。ロリポップ!レンタルサーバーの初期設定の状態から、少しずつ最適化を進めていきます。

各項の先頭の数字は、上記グラフの横軸の数字に対応します。

(0) 初期状態

WordPress 本体や Cocoon テーマ & grayish スキン、各種プラグインを最新に更新、Google Analytics と Google Search Console を Site Kit by Google プラグインに連携、等を行った段階で、PSI のスコアは Mobile 46 PC 96 でした。

LSCache もアップデートしたのみで設定は何も変更していない状態です。

(1) Cocoon テーマによる最適化

初めに、LSCache の設定は初期状態のままで、Cocoon テーマによる最適化を ON にしました。

こちらを参考に

  • ブラウザキャッシュの有効化
  • CSS を縮小化する
  • JavaScript を縮小化する

の項目を全て ON にしてみました。

キャッシュを一度クリアして、再読み込みを幾度か繰り返しましたが、PSI のスコアは Mobile 48 PC 93 と、ほぼ変わらないか若干下がる結果でした。

アドセンス、Analytics、Facebook、Twitter等の外部が読み込まれている場合は、一気に点数がガタ落ちします。外部リソースに起因する点数ダウンは、テーマ側からはどうしようもありません。

https://wp-cocoon.com/site-speed-up/

Google AdSense は未だ使用していませんが、Google Analytics や A8.net、楽天アフィリエイト、バリューコマース等を使用していますので、特に Mobile のスコア向上は見込めないと判断し、Cocoon テーマによる最適化は全て OFF とし、LSCache プラグインの最適化を進める事にしました。

(2) ドメインキー取得、画像の最適化

LSCache プラグインの最適化の一つ目は、ドメインキーの取得です。これを行わないと各種最適化が進まないので、最初に取得します。

「一般」 -> 「一般設定」の中にある「ドメインキー」の欄の右側の「ドメインキーの要求」ボタンを押します。

ドメインキーを未取得

ドメインキーが取得できれば、次のような表示に変わります。

ドメインキー取得後 (キーは表示されません)

これで画像の最適化を行えますので、自動要求 Cron 含めて必要な項目を ON にします。

項目初期変更後
自動アップグレードOFFOFF
ドメインキー空白取得
サービス中の現在のクラウドなし順次追加
されます
ゲストモードOFFOFF
ゲストの最適化OFFOFF
サーバー IP空白空白
通知ONON
一般 [1] 一般設定
項目初期変更後
自動要求 CronOFFON
自動戻し CronONON
オリジナル画像の
最適化
ONON
オリジナルバックアップを
削除する
OFFOFF
可逆最適化OFFOFF
EXIF / XMP データを
保存する
ONOFF
WebP 画像への変換OFFON
WebP 属性を置換するDefaultDefault
WebP の特別な srcsetOFFON
WordPress 画像
品質管理
82
(Default)
82
(Default)
画像の最適化 [2] 画像最適化設定

これで PNG画像の tiny化、WebP 化が自動で行われるようになります。

画像の最適化が済んだ状態で PSI のスコアは Mobile 45 PC 91 と少し悪化しました。

(3) HTML の最適化、キャッシュ設定の変更

HTML の圧縮化は比較的悪影響が出にくい項目ですので ON に変更します。DNS プリフェッチは Cocoon テーマの設定と被る部分もありますが、私は両方とも ON にしています。

合わせて、キャッシュの設定を見直しました。ログインしているユーザーのキャッシュは不要だと思いますので OFF にしています。

項目初期変更後
HTML 圧縮化OFFON
DNS プリフェッチ空白空白
DNS プリフェッチ制御OFFON
DNS プリコネクト空白空白
HTML Lazy Load
セレクタ
空白空白
クエリ文字列を削除OFFOFF
Google フォントを
非同期に読み込む
OFFON
Google フォントを
削除
OFFOFF
WordPress 絵文字を
削除
OFFOFF
Noscript タグの削除OFFON
ページの最適化 [3] HTML の設定
項目初期変更後
キャッシュを有効にするONON
ログインしたユーザーを
キャッシュ
ONOFF
コメントをキャッシュONON
REST API をキャッシュONON
ログインページを
キャッシュ
ONOFF
favicon.ico をキャッシュONON
PHP リソースをキャッシュONON
モバイルをキャッシュOFFON
 モバイルユーザー
 エージェントのリスト
DefaultDefault
プライベートキャッシュ
URIs
空白空白
URIs を強制キャッシュする空白空白
パブリックキャッシュ
URI を強制する
空白空白
クエリ文字列を落とすDefaultDefault
キャッシュ [1] キャッシュ

HTML の最適化とキャッシュの設定を変更した後で、PSI のスコアは Mobile 48 PC 92 でした。

JavaScript、CSS リストの取得

HTML やキャッシュの項目の設定変更では大幅な PSI スコアの改善は見込めません。そこで、JavaScript と CSS の最適化を進めます。

LSCache プラグインの最適化手順については、以下のページで説明されています (英語)。

基本的な手順としては、

  • JavaScript と CSS の最適化を OFF にする
  • 使用されている JavaScript と CSS の一覧を取得する (Chrome デベロッパーツール使用)
  • 最適化を一つずつ ON にして画面表示の不具合が発生した場合には、除外欄に追加する

となります。

私のサイトの JavaScript と CSS の一覧を以下に示します。不要なドメイン名は除外しました。

JavaScript
jquery.min.js
jquery-migrate.min.js
/plugins/contact-form-7/includes/swv/js/index.js
/plugins/contact-form-7/includes/js/index.js
/themes/cocoon-master/plugins/stickyfill/dist/stickyfill.min.js
/themes/cocoon-master/javascript.js
/themes/cocoon-master/skins/skin-grayish-topfull/javascript.js
/themes/cocoon-child-master/javascript.js
/recaptcha/api.js
/wp-includes/js/dist/vendor/wp-polyfill-inert.min.js
/wp-includes/js/dist/vendor/regenerator-runtime.min.js
/wp-includes/js/dist/vendor/wp-polyfill.min.js
/plugins/contact-form-7/modules/recaptcha/index.js
/gtag/js
recaptcha__ja.js
https://www.google.com/js/bg/
CSS
/wp-includes/css/dist/block-library/style.min.css
/plugins/contact-form-7/includes/css/styles.css
https://fonts.googleapis.com/css
/themes/cocoon-master/style.css
/themes/cocoon-master/keyframes.css
/themes/cocoon-master/webfonts/fontawesome5/css/all.min.css
/themes/cocoon-master/css/fontawesome5.css
/themes/cocoon-master/webfonts/icomoon/style.css
/themes/cocoon-master/skins/skin-grayish-topfull/style.css
/themes/cocoon-child-master/style.css
/themes/cocoon-child-master/keyframes.css
styles__ltr.css

この一覧を元に、JavaScript と CSS を最適化します。

(4)~(6) JS の最適化 その1

先ずは除外項目等は追加せずに、JS (JavaScript) の最適化を一つずつ ON にしてみます。

  • (4) JS 圧縮化 ON
  • (5) JS 結合 ON
  • (6) JS は外部とインラインを組み合わせる ON
項目初期変更後
JS 圧縮化OFFON
JS 結合OFFON
JS は外部と
インラインを
組み合わせる
OFFON
JS を遅延読み込みOFFOFF
ページの最適化 [2] JS 設定

この3項目を ON にしても、画面表示の乱れは発生しませんでした。不具合とまでは言えませんが、次の現象が生じました。

  • Google reCAPTCHA で読み込まれる JavaScript が 'recaptcha__ja.js' から 'recaptcha__en.js' に変更
  • reCAPTCHA バッジ (ロゴ画像) を表示していると、日本語から英語表示に変わる

PSI のスコアは Mobile 44 -> 47 -> 51、PC 92 -> 93 -> 95 と、少しずつですが向上しました。

(7) JS を遅延読み込み ... 画面表示乱れ発生

JS 設定の残りの項目、JS を遅延読み込みの設定を変更してみました。

項目初期変更後
JS 圧縮化OFFON
JS 結合OFFON
JS は外部と
インラインを
組み合わせる
OFFON
JS を遅延読み込みOFF遅延
ページの最適化 [2] JS 設定

先ずは "遅延" に設定した所、次のような画面表示の乱れが発生しました。

  • モバイルのフロントページは、通常は "ホーム" のみが左上に表示されているものが、"ホーム"・"ブログタイトル"・"検索" の全てが表示されるようになりました。
フロントページの正常な状態 : 左端に "ホーム" のみ表示
画面表示が乱れた状態 : フロントページで "ホーム"・"ブログタイトル"・"検索"の全てが表示

この現象は読み込み直後のみ発生し、PC であればマウスの移動、Mobile であれば画面スクロールで解消します。

画面の乱れはありますが、この状態で PSI のスコアは Mobile 84 PC 99 と大きく向上しました。PSI のスコアの推移、一つ目の白○です。

PSI スコアの推移

(8) reCAPTCHA の JS 読み込み修正

Google reCAPTCHA の英語版が表示される件を対処しました。リストアップした JavaScript のうち、Google reCAPTCHA に関連する JavaScript を最適化から除外します。

初期状態からの変更箇所を表にまとめます。"JS 除外" と "JS Deferred / Delayed 除く" の項目は一旦削除し、"JS 除外" に追記しました。

項目初期変更後
JS 遅延が含まれるもの空白空白
JS 除外jquery.js
jquery.min.js
/recaptcha/api.js
/plugins/contact-form-7/modules/recaptcha/index.js
JS Deferred / Delayed
除く
jquery.js
jquery.min.js
gtm.js
analytics.js
空白
ゲストモードのJS は除外空白空白
除外 URI空白空白
ゲストのみに最適化ONON
ロール除外チェック
なし
チェックなし
ページの最適化 [8] チューニング
JS 除外 追加項目

これで、Google reCAPTCHA バッジ (アイコン) は日本語表記となり、JavaScript も 'recaptcha__ja.js' が読み込まれるようになりました。

画面表示の乱れは相変わらず発生していますが、PSI のスコアは Mobile 85 PC 99 と少し向上しました。PSI スコア推移、二つ目の白丸です。

PSI スコアの推移

(9) JS を遅延読み込み 遅延 -> Deferred に変更

JS の除外項目を色々と調整しても、画面表示の乱れは解決できませんでした。

そこで、"JS を遅延読み込み" の項目を、"遅延"から "Deferred" に変更した所、画面表示の乱れは解消しました。

項目初期変更後
JS 圧縮化OFFON
JS 結合OFFON
JS は外部と
インラインを
組み合わせる
OFFON
JS を遅延読み込みOFFDeferred
ページの最適化 [2] JS 設定

その代わり、PSI のスコアは Mobile 51 PC 95 と、特に Mobile が大きく悪化しました。

(10) JS を遅延読み込み 遅延に戻す

JS の遅延読み込みを "遅延" から "Deferred" に変更した影響は大きく、PSI の Mobile のスコアが極端に低下してしまいました。

他の解決方法を探すために、"JS を遅延読み込み" を再び "遅延" に戻しました。

項目初期変更後
JS 圧縮化OFFON
JS 結合OFFON
JS は外部と
インラインを
組み合わせる
OFFON
JS を遅延読み込みOFF遅延
ページの最適化 [2] JS 設定

PSI のスコアは Mobile 88 PC 99 と向上した代わりに、画面表示の乱れは再び発生しました。マウス操作、又はスクロールで解消しますが、画面表示の乱れを直す方法を模索しました。

PSI スコアの推移

(11) [8] チューニングの調整

"JS を遅延読み込み" を "Deferred" で使う場合にも、[8] チューニングの "JS 遅延が含まれるもの" に JavaScript を追加すると遅延読み込みされます。

その際に、"JS 結合" と "JS は外部とインラインを組み合わせる" が ON では上手く遅延できなかったので、OFF に変更しました。

先に示した JavaScript のリストを参考にして、JS 設定と [8] チューニングの項目を調整しました。

項目初期変更後
JS 圧縮化OFFON
JS 結合OFFOFF
JS は外部と
インラインを
組み合わせる
OFFOFF
JS を遅延読み込みOFFDeferred
ページの最適化 [2] JS 設定
項目初期変更後
JS 遅延が含まれるもの空白/plugins/contact-form-7/includes/swv/js/index.js
/plugins/contact-form-7/includes/js/index.js
/recaptcha/api.js
/plugins/contact-form-7/modules/recaptcha/index.js
recaptcha__ja.js
/gtag/js
JS 除外jquery.js
jquery.min.js
/themes/cocoon-child-master/javascript.js
JS Deferred / Delayed
除く
jquery.js
jquery.min.js
gtm.js
analytics.js
空白
ゲストモードのJS は除外空白空白
除外 URI空白空白
ゲストのみに最適化ONON
ロール除外チェック
なし
チェックなし
ページの最適化 [8] チューニング

試行錯誤した結果、上の表の内容に落ち着きました。画面表示の不具合はありません。その結果、PSI のスコアは、JS が Deferred でも Mobile 84 PC 99 と回復しました。

(最終的には、この設定は使用しない事にしました)

PSI スコアの推移

(12), (13), (14) CSS の最適化 その1 (CCSS使用)

JavaScript の画面表示不具合が解決できましたので、次は CSS の最適化を行います。

(12) CSS 圧縮化 ON、(13) CSS 結合 ON、(14) CSS を非同期読み込み ON 、と一つずつ順番に ON にしました。CSS を非同期読み込みは、Critical CSS (CCSS) を生成するオプションです。

項目初期変更後
CSS 圧縮化OFFON
CSS 結合OFFON
 UCSS を生成するOFFOFF
 UCSS インラインOFFOFF
CSS の外部と
インラインを
組み合わせる
OFFOFF
CSS を非同期読み込みOFFON
 URL ごとの CSSOFFOFF
 インライン CSS
 非同期ライブラリ
OFFOFF
フォント表示の最適化デフォルトswap
ページの最適化 [1] CSS 設定

CSS 除外には、Cocoon-Child テーマの sytle.css を追加しました。この追加は必須です。子テーマの JavaScript や PHP は LSCache プラグインで最適化されても反映されますが、子テーマの CSS に追加した内容は、CSS 除外に追加しておかないと反映されません。

項目初期変更後
CSS 除外空白/themes/cocoon-child-master/style.css
UCSS ファイルの
除外とインライン化
空白空白
UCSS セレクターの
許可リスト
空白空白
UCSS URI を除くOFFOFF
別々の CCSS キャッシュ
ポストタイプ
pagepage
個別の CCSS キャッシュ
URI
空白空白
クリティカル CSS ルール空白空白
ページの最適化 [9] チューニング CSS

PSI スコアは以下の表の様に徐々に向上しましたが、頭打ちとなりました。複数回測定すると、Mobile のスコアが 90前後で推移していました。特に LCP は CCSS を使う場合にはこれ以上向上が見込めません。

PSI Score(12)(13)(14)Green Range
Mobile86879290-100
 FCP1.62.01.70-1.80
 LCP4.13.72.80-2.50
 TBT90501700-200
 CLS0.0010.0010.0660-0.10
 SI2.63.02.60-3.4
PC95989790-100
CSS 最適化 (CCSS使用) PSI スコア推移
PSI スコアの推移

(15)、(16) CSS の最適化 その2 (UCSS使用)

方針を変更して、CCSS ではなく Unique CSS (UCSS) を使用する事にしました。また、ゲストモードとゲスト最適化を使用するようにしました。ゲストモード、ゲスト最適化を使用する場合には、JS の項目も修正が必要でしたので手直ししました。("JS 遅延が含まれるもの" の殆どを削除しました)

項目初期変更後
CSS 圧縮化OFFON
CSS 結合OFFON
 UCSS を生成するOFFON
 UCSS インラインOFFON
CSS の外部と
インラインを
組み合わせる
OFFOFF
CSS を非同期
読み込み
OFFON
 URL ごとの CSSOFFON
 インライン CSS
 非同期ライブラリ
OFFON
フォント表示の最適化デフォルトswap
ページの最適化 [1] CSS 設定
項目初期変更後
自動アップグレードOFFOFF
ドメインキー空白取得
サービス中の
現在のクラウド
なし順次追加
されます
ゲストモードOFFON
ゲストの最適化OFFON
サーバー IP空白空白
通知ONON
一般 [1] 一般設定
項目初期変更後
JS 圧縮化OFFON
JS 結合OFFON
JS は外部と
インラインを
組み合わせる
OFFON
JS を遅延読み込みOFFDeferred
ページの最適化 [2] JS 設定
項目初期変更後
JS 遅延が
含まれるもの
空白/gtag/js
JS 除外jquery.js
jquery.min.js
/recaptcha/api.js
/plugins/contact-form-7/modules/recaptcha/index.js
JS Deferred
/ Delayed
除く
jquery.js
jquery.min.js
gtm.js
analytics.js
空白
ゲストモードの
JS は除外
空白空白
除外 URI空白空白
ゲストのみに
最適化
ONON
ロール除外チェック
なし
チェックなし
ページの最適化 [8] チューニング

"CSS の外部とインラインを組み合わせる" の項目は OFF としました。ON にすると以下のような画面表示の乱れが生じた為です。

  • フロントページの上部メニューの "ホーム" アイコンが中央寄せになる
  • サイドスライドメニューの中身が表示されない

また、この設定では UCSS を生成する設定としていますが、QUIC.cloud から生成された UCSS が送り返されません。その為、Chrome のデベロッパーツールで見ると、UCSS が反映されていない状態となっていました。

それでも、PSI のスコアは Mobile 99 PC 100 へと向上しました。

PSI Score(12)(13)(14)(15)(16)Green Range
Mobile868792979990-100
 FCP1.62.01.71.61.60-1.80
 LCP4.13.72.82.21.90-2.50
 TBT9050170110100-200
 CLS0.0010.0010.066000-0.10
 SI2.63.02.61.81.60-3.4
PC95989710010090-100
CSS 最適化 (CCSS使用) PSI スコア推移

SI が改善されているのに対して FCP、LCP がそれほど改善されていないのは、UCSS が生成されていない為です。

PSI スコアの推移

(17) 表示乱れへの対策 : 子テーマ CSS に追記 (20240426追記あり)

UCSS が生成されない原因は "CSS の外部とインラインを組み合わせる" が OFF である為です。こちらを ON にすると UCSS は生成されますが、画面表示が乱れます。

この対策については、Chrome デベロッパーツールで、表示が正常な時と乱れている時を比較して、正常に表示する為に必要な CSS を特定し、子テーマの CSS に反映させる事で対処しました。

子テーマの style.css に追加した内容を以下に示します。

/* 20240223 LSCache + grayish 表示不具合修正 ここから */
/* スライドサイドバーの中身を表示させる */
.no-mobile-sidebar .sidebar {
    display: block;
}
/* トップページのホームボタンが中央に寄るのを防止する */
/* 20240426 Cocoon Ver.2.7.3.1, grayish Ver.1.0.12 で解消した為コメント */
/* .has-logo-button .menu-button {
    width: 70px;
} */
/* この二つの対策で LiteSpeed Cache プラグインの UCSS 生成できる */
/* 20240223 LSCache + grayish 表示不具合修正 ここまで */

20240426 追記 : 二つ目の対策は Cocoon Ver.2.7.3.1, grayish Ver.1.0.12 から不要になりました。フロントページのキャッシュと UCSS を消去して、UCSS を再生成すれば OK です。

この対策を追加する事により、"CSS の外部とインラインを組み合わせる" を ON にする事ができ、UCSS も生成されるようになりました。

項目初期変更後
CSS 圧縮化OFFON
CSS 結合OFFON
 UCSS を生成するOFFON
 UCSS インラインOFFON
CSS の外部と
インラインを
組み合わせる
OFFON
CSS を非同期
読み込み
OFFON
 URL ごとの CSSOFFON
 インライン CSS
 非同期ライブラリ
OFFON
フォント表示の最適化デフォルトswap
ページの最適化 [1] CSS 設定
PSI Score(14)(15)(16)(17)Green Range
Mobile92979910090-100
 FCP1.71.61.61.10-1.80
 LCP2.82.21.91.60-2.50
 TBT17011010100-200
 CLS0.0660000-0.10
 SI2.61.81.61.10-3.4
PC9710010010090-100
CSS 最適化 (CCSS使用) PSI スコア推移

SI に加えて、中々改善できなかった FCP、LCP についても改善されました。

その後も様子を見ていますが、Mobile 99~100、PC 100 で安定しています。読み込むタイミングにより、偶に FCP が Yellow Range になる事はありますが、極端に悪化する事はありません。

スクロールテーブルの表示乱れへの対策 (20240313追加)

改めて Chrome シークレットモードで確認していたら、スクロールするテーブルのアイコン表示が消えて、テーブルの左下に文字だけ表示されている状態でした。(見逃していました…)

とりあえず回避方法を確立できましたので紹介します。

まず、CSS 除外に scroll-hint.css を追加します。

/cocoon-master/plugins/scroll-hint-master/css/scroll-hint.css

他のスキンでは上記だけで直りましたが、grayish スキンの場合には下記を子テーマの style.css に追記する必要がありました。grayish スキンの style.css からの転記です。

/* 20240313 スクロールヒントを表示する ここから */
/* /cocoon-master/plugins/scroll-hint-master/css/scroll-hint.css を
 *  CSS 除外するのに加えて、grayish スキンでは下記も必要 */
/* スクロールヒント  for table */
.skin-grayish .scroll-hint-icon {
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  background-color: var(--skin-grayish-cat-back);
  width: 80px;
  border-radius: 99%;
  top: calc(50% - 30px);
  left: unset;
  right: 20px;
}

.skin-grayish .scroll-hint-icon:before,
.skin-grayish .scroll-hint-icon:after {
  display: none;
}

.skin-grayish .scroll-hint-text {
  color: var(--white);
  margin-top: 0;
}
/* 20240313 スクロールヒントを表示する ここまで */

この変更による PSI への影響はなさそうです。

SNS シェアアイコンが表示されない不具合への対策 (20240326追記)

PC 画面で幅広で表示した際に、左端に SNS シェアアイコンが表示されていませんでした。(Cocoon のアップデートで気付きました)

grayish スキンの style.css から、以下の内容を子テーマの style.css に追記する事で表示されるようになりました。また、Bluesky のシェアアイコンが表示されませんでしたので、UCSS を再生成しました。

/* 20240326 PC 表示時の左側に sns-share 表示 ここから */
/* mainが見える間 表示 */
.skin-grayish .article-header .sns-share[data-scroldisp=on] {
  opacity: 1;
  visibility: visible;
}

/* mainが見えない時 非表示 */
.skin-grayish .article-header .sns-share[data-scroldisp=off] {
  opacity: 0;
  visibility: hidden;
}
/* 20240326 PC 表示時の左側に sns-share 表示 ここまで */

JavaScript、CSS の最終的な設定一覧

LSCache プラグインの JavaScript と CSS の最終的な設定の一覧を以下に示します。子テーマの style.css に表示乱れ対策を記載した事で、除外項目が少なくて済み、JS も Deferred で読み込んでも (遅延で読み込ませなくても) PSI のスコアを高く維持できています。

項目初期変更後
CSS 圧縮化OFFON
CSS 結合OFFON
 UCSS を生成するOFFON
 UCSS インラインOFFON
CSS の外部と
インラインを
組み合わせる
OFFOFF
CSS を非同期
読み込み
OFFON
 URL ごとの CSSOFFON
 インライン CSS
 非同期ライブラリ
OFFON
フォント表示の最適化デフォルトswap
ページの最適化 [1] CSS 設定
項目初期変更後
JS 圧縮化OFFON
JS 結合OFFON
JS は外部と
インラインを
組み合わせる
OFFON
JS を遅延
読み込み
OFFDeferred
ページの最適化 [2] JS 設定
項目初期変更後
JS 遅延が
含まれるもの
空白/gtag/js
JS 除外jquery.js
jquery.min.js
/recaptcha/api.js
/plugins/contact-form-7/modules/recaptcha/index.js
JS Deferred
/ Delayed
除く
jquery.js
jquery.min.js
gtm.js
analytics.js
空白
ゲストモードの
JS は除外
空白空白
除外 URI空白空白
ゲストのみに
最適化
ONON
ロール除外チェック
なし
チェックなし
ページの最適化 [8] チューニング
項目初期変更後
CSS 除外空白/cocoon-master/plugins/scroll-hint-master/css/scroll-hint.css
/themes/cocoon-child-master/style.css
UCSS ファイルの
除外とインライン化
空白空白
UCSS セレクターの
許可リスト
空白空白
UCSS URI を除くOFFOFF
別々の CCSS
キャッシュ
ポストタイプ
pagepage
個別の CCSS
キャッシュ
URI
空白空白
クリティカル
CSS ルール
空白空白
ページの最適化 [9] チューニング CSS

結び

今回の記事では、「新しきを学ぶ」事の一つ目として、Cocoon テーマ & grayish スキンで LSCache プラグインを最適化する方法について記載しました。

ロリポップ!レンタルサーバーの WordPress 簡単インストールで一緒にインストールした LSCache プラグインの初期状態から、

  • ドメインキーを取得して各最適化が行われるように変更しました
  • 画像の最適化では Cron を有効にして、PNG の tiny 化と WebP 化が行われるように変更しました
  • JavaScript の最適化では、"遅延" では画面表示が乱れます。"Deferred" にする必要があります。
  • CSS の最適化では、CCSS では PSI のスコア向上には限界があります。UCSS 必須です。
  • CSS の最適化による画面表示の乱れ対策を子テーマの style.css に追加する事で、UCSS が生成されるようになり、Mobile / PC 共に PSI のスコアは 99 ~ 100 を維持できるようになりました。

最後の項目の原因を掴むまでに時間を要しました。JavaScript も絡みますので CSS は難しいです。

Cocoon テーマ & grayish スキンで LSCache を使う方の参考になれば幸いです。

【補足】ロリポップ!の LSCache プラグイン初期設定

補足として、ロリポップ!レンタルサーバーの LSCache プラグインの初期設定を紹介します。

ロリポップ!レンタルサーバーでは、WordPress 簡単インストールの時に LSCache プラグインのインストールを済ませる事が出来ます。以前からインストール直後の LSCache プラグインの初期条件がどのようになっているか興味がありましたので、最適化を進める前に記録しておきました。以下に一覧で示します。

初期設定は「キャッシュのみを有効」という状態です。最適化は実施されていません。

主要な項目毎にお勧めの設定を記載します。

一般

項目状態
自動アップグレードOFF
ドメインキー空白
サービス中の現在のクラウドなし
ゲストモードOFF
ゲストの最適化OFF
サーバー IP空白
通知ON
[1] 一般設定
項目状態
ゲストモードの
ユーザーエージェント
Default
ゲストモード IPDefault
[2] チューニング
  • 自動アップグレードは OFF を推奨します。WordPress にアップデートのサインが出ますので、バックアップを実行した後でアップグレードした方が良いでしょう。
  • ドメインキーは取得して下さい。LiteSpeed Cache プラグインによるサイトの最適化には、ドメインキーの取得が必須です。QUIC.cloud CDN で負荷分散を使わないとしても、ドメインキーを取得すれば、画像の最適化や JavaScript、CSS の最適化が行われますので、取得をお勧めします。
  • ゲストモード及びゲストの最適化は、PSI のスコアを追求するのであれば ON です。ただし、JavaScript と CSS の最適化による表示乱れ等の対処が済んでいない場合には、OFF です。

キャッシュ

項目状態
キャッシュを有効にするON
ログインしたユーザーを
キャッシュ
ON
コメントをキャッシュON
REST API をキャッシュON
ログインページを
キャッシュ
ON
favicon.ico をキャッシュON
PHP リソースをキャッシュON
モバイルをキャッシュOFF
 モバイルユーザー
 エージェントのリスト
Default
プライベートキャッシュ
URIs
空白
URIs を強制キャッシュする空白
パブリックキャッシュ
URI を強制する
空白
クエリ文字列を落とすDefault
[1] キャッシュ
項目状態
デフォルトのパブリック
キャッシュ TTL
604800 sec
1 week
デフォルトのプライベート
キャッシュ TTL
1800 sec
30 minutes
デフォルトの
フロントページ
604800 sec
1 week
デフォルトの
フィード TTL
604800 sec
1 week
デフォルトの REST TTL604800 sec
1 week
既定の HTTP ステータス
コードページ TTL
Default
[2] TTL

キャッシュは一通り有効になっていました。個人的には、ログインしているユーザーのキャッシュは不要だと考えますので、

  • "ログインしたユーザーをキャッシュ" は OFF
  • "ログインページをキャッシュ" は OFF

の方が好みです。

  • モバイルのキャッシュは初期状態では OFF ですが、レスポンシブなテーマ・スキンだとしても ON の方が Mobile の PSI のスコアが向上します。(その代わり、キャッシュの量が多くなり、クローラーの実行数が増加します)
項目状態
アップグレード時に
全てをパージする
ON
公開 / 更新の自動
パージルール
Default
古いものを出すOFF
スケジュールされた
パージ URL
空白
パージ予定時間空白
すべてをパージする
フック
Default
[3] パージ
項目状態
URIs をキャッシュ
しない
空白
クエリ文字列を
キャッシュしない
空白
カテゴリを
キャッシュしない
空白
クッキーを
キャッシュしない
空白
ユーザーエージェントを
キャッシュしない
空白
ロールをキャッシュしないチェック
なし
[4] 除外
項目状態
ESI を有効にするOFF
管理バーをキャッシュON
コメントフォームを
キャッシュ
ON
ESI ノンスDefault
グループを変更チェック
なし
[5] ESI
項目状態
オブジェクト
キャッシュ
OFF
方法Memcached
ホストlocalhost
ポート11211
デフォルトの
オブジェクトの
有効期間
360 sec
ユーザー名空白
パスワード空白
Redis
データベース ID
0
グローバルグループDefault
グループを
キャッシュしない
Default
永続的な接続ON
WP-Admin の
キャッシュ
ON
Transients を格納ON
[6] オブジェクト
項目状態
ブラウザキャッシュOFF
ブラウザキャッシュ
TTL
31557600 sec
52 weeks 1 days
6 hours
[7] ブラウザー
項目状態
ログインクッキー空白
クッキーを変更する空白
HTTP / HTTPS の
互換性を向上させる
OFF
インスタントクリックOFF
[8] 高度な設定

[2] TTL、[3] パージ、[4] 除外、[5] ESI、[6] オブジェクト、[8] 高度な設定については、この先も変更していません。

ただ、継続して使用していると偶に PageSpeed Insights の結果が落ち込む事がありますので、定期的なパージは必要かもしれません。

CDN

項目状態
QUIC.cloud CDNOFF
CDN マッピングを使用OFF
置換する HTML 属性Default
元の URL空白
含まれるディレクトリDefault
除外パス空白
Cloudflare APIOFF
[1] CDN 設定
項目状態
CDN 設定状況未稼働
[2] QUIC.cloud CDN の設定

[3] 管理には設定項目はありません。

  • QUIC.cloud CDN は、私は使用していますが、DNS の設定が必要で手順が煩雑になりますので、OFF でも良いと思います。
  • Cloudflare は、私は使用した事がありませんので OFF のままです。

画像の最適化

[1] 画像最適化の概要には設定項目はありません。[2] 画像最適化設定の初期値です。

項目状態
自動要求 CronOFF
自動戻し CronON
オリジナル画像の
最適化
ON
オリジナルバックアップを
削除する
OFF
可逆最適化OFF
EXIF / XMP データを
保存する
ON
WebP 画像への変換OFF
WebP 属性を置換するDefault
WebP の特別な srcsetOFF
WordPress 画像
品質管理
82
(Default)
[2] 画像最適化設定

自動要求 Cron や WebP 画像への変換には、QUIC.cloud のドメインキーの取得が必要です。初期状態では画像の最適化は自動では行われません。

ドメインキーを取得して、自動要求 Cron を ON にすれば、自動で png の最小化を含む最適化が行われます。WebP 画像への変換も ON にすれば、WebP 画像にも自動で変換されます。

ページの最適化

表示乱れ等のトラブルが出やすい項目です。初期値は殆どの項目で OFF となっています。この記事の前半で説明した手順で最適化を図る必要があります。そのまま ON にしても、表示の乱れが発生した場合に対処できずに、OFF にもどすしかありません。

項目状態
CSS 圧縮化OFF
CSS 結合OFF
 UCSS を生成するOFF
 UCSS インラインOFF
CSS の外部と
インラインを
組み合わせる
OFF
CSS を非同期読み込みOFF
 URL ごとの CSSOFF
 インライン CSS
 非同期ライブラリ
OFF
フォント表示の最適化デフォルト
[1] CSS 設定
項目状態
JS 圧縮化OFF
JS 結合OFF
JS は外部と
インラインを
組み合わせる
OFF
JS を遅延読み込みOFF
[2] JS 設定
項目状態
HTML 圧縮化OFF
DNS プリフェッチ空白
DNS プリフェッチ制御OFF
DNS プリコネクト空白
HTML Lazy Load
セレクタ
空白
クエリ文字列を削除OFF
Google フォントを
非同期に読み込む
OFF
Google フォントを
削除
OFF
WordPress 絵文字を
削除
OFF
Noscript タグの削除OFF
[3] HTML の設定
項目状態
アイキャッチ画像の
プリロード
OFF
画像 遅延読み込みOFF
基本的な画像
プレースホルダー
空白
レスポンシブ
プレースホルダー
OFF
レスポンシブ
プレースホルダー
SVG
Default
レスポンシブ
プレースホルダーの色
Default
LQIP クラウド
ジェネレーター
OFF
LQIP 品質4
(Default)
LQIP 最小寸法150 x 150
(Default)
バックグラウンドでの
LQIP の生成
ON
遅延読み込み iframeOFF
不足しているサイズを
追加する
OFF
[4] メディア設定
項目状態
ビューポート
イメージ
OFF
ビューポート
イメージ Cron
OFF
[5] VPI
項目状態
Gravator キャッシュOFF
 Gravator キャッシュ
 Cron
OFF
 Gravator キャッシュ
 TLL
604800 sec
1 week
リソースの
ローカライズ
OFF
 ローカライズファイルDefault
[7] ローカリゼーション
項目状態
遅延読み込み
Image を除外
空白
遅延読み込み
Image クラス名を
除外する
Default
遅延読み込み
Image 親クラス名を
除外する
空白
遅延読み込み
Image iframe
クラス名を除外する
空白
遅延読み込み
Image iframe
親クラス名を除外する
空白
遅延読み込み URI の
除外
空白
LQIP を除外変更なし
(自動で追加)
[6] 除外するメディア

([6] 除外するメディアと [7] ローカリゼーションを入れ替えました)

項目状態
JS 遅延が含まれるもの空白
JS 除外jquery.js
jquery.min.js
JS Deferred / Delayed
除く
jquery.js
jquery.min.js
gtm.js
analytics.js
ゲストモードの
JS は除外
空白
除外 URI空白
ゲストのみに最適化ON
ロール除外チェック
なし
[8] チューニング
項目状態
CSS 除外空白
UCSS ファイルの
除外とインライン化
空白
UCSS セレクターの
許可リスト
空白
UCSS URI を除くOFF
別々の CCSS キャッシュ
ポストタイプ
page
個別の CCSS キャッシュ
URI
空白
クリティカル CSS ルール空白
[9] チューニング CSS

データベース

[1] 管理には設定項目はありません。

項目状態
リビジョンの最大数0
リビジョンの最大エイジ0
[2] DB最適化設定

クローラー

[1] 概要、[2] マップ、[3] ブロックリストには設定項目はありません。

項目状態
クローラーOFF
遅延500
マイクロ秒
実行時間400秒
実行間隔600秒
クローラー間隔302400秒
スレッド3
タイムアウト30
サーバー負荷制限1
[4] 一般設定
項目状態
ロールシミュレーション空白
Cookie シミュレーション追加なし
[5] シミュレーション設定
項目状態
カスタムサイトマップ空白
サイトマップから
ドメインを削除
ON
サイトマップの
タイムアウト
120
[6] サイトマップ設定

クローラーは、定期的にキャッシュを作成したり、必要な UCSS を生成するアクションを発生させてくれますので、個人的には ON にしています。

ツールボックス

[1] パージ、[2] インポート / エクスポート、[3] .htaccess、[7] ログ表示には設定項目はありません。

[5] レポートは初期設定のまま変更しませんでした。

項目状態
フロントエンド
ハートビート制御
OFF
フロントエンド
ハートビート TTL
60 sec
バックエンド
ハートビート
コントロール
OFF
バックエンド
ハートビート TTL
60 sec
エディタ
ハートビート
OFF
エディタ
ハートビート TTL
15 sec
[4] ハートビート
項目状態
全ての機能を無効にするOFF
デバッグログOFF
管理者 IP127.0.0.1
デバッグレベル基本
ログファイルの
サイズ制限
3MB
(Default)
クッキーをログに記録OFF
クエリ文字列を折畳むOFF
包含するデバッグ URI空白
除外するデバッグ URI空白
デバッグ用文字列の除外空白
[6] デバッグ設定
項目状態
Github のバージョンを試す空白
[8] ベータテスト

ハートビート制御は、このサイトでは有効にしてみました。負荷が高い場合には OFF に戻そうと考えていますが、今の所は大丈夫そうです。

コメント

タイトルとURLをコピーしました