Cocoon
親テーマバージョン:2.7.7.2
子テーマのバージョン:1.1.3
使用中のプラグインは38個(停止中は0個)です。
■注意■
当サイトで使用中のプラグインはそれぞれ適切な設定・管理の上で38個となっています。
ご自身のWordPressサイトで安易にプラグインを増やさないようご注意ください。
普通は20個でも多いです。
この記事を書く少し前の時点での PageSpeed Insights のスコアは
デスクトップのスコアは常に98~100点なんですが、携帯電話のスコアは65~96点くらいを乱高下します。
特に日中は96点の1分後に再計測して65点とか、ちょくちょく大幅にスコアが上下します。
トップページの文字数が約6,000文字あり、文字数を減らせば減らしたぶんだけ表示速度は速くなりますが、それでは意味がありません。
これをどうにか改善したくて、かと言って思いつく限りのことは全て施策済みで、そんな状況から最後の悪あがきをしたのがこの記事の施策内容です。
最終施策を書く前に、PageSpeed Insightsが携帯電話のスコアだけ不安定な理由について説明します。
『PageSpeed Insightsがモバイルだけ遅い理由』で検索するとたくさんのサイトがヒットしますが、『PageSpeed Insightsが携帯電話のスコアだけ不安定な理由』や『PageSpeed Insightsの携帯電話のスコアだけ乱高下する原因』等で検索してもほとんどヒットしません。
以下、世界中のサイトをググった結果 & 私の予想も含めて、PageSpeed Insightsが携帯電話のスコアだけ不安定な理由・原因です。
冒頭の
PageSpeed Insightsの『パフォーマンスの問題を診断する』では、計測時に用いる端末は実際のユーザー端末ではなく、PageSpeed Insights側でシミュレートした仮想端末でもってページの表示速度を計測してスコア算出しています。
の表
携帯電話 | デスクトップ | |
CPUの遅さ | 4x | 1x |
RTT ※通信開始までの遅延 | 150 ms (0.15秒) | 40 ms (0.04秒) |
通信速度 | 約1,638 kb/秒 | 10,240 kb/秒 |
PageSpeed Insights側で仮想端末・仮想環境でもって計測する際、携帯電話の場合は不安定な4G接続のネットワーク速度でシミュレーションして計測しています。
これが低速(約1.6 Mbps)な上に割と不安定らしく、ちょっとした変動で大きな影響を受ける可能性がある、らしいです。
※後述の『初期の輻輳(ふくそう)ウィンドウの影響』とも関係あります。
PageSpeed Insights側で計測する際の仮想端末は特定のデバイスをエミュレーション(※1)しています。
※1 シミュレーションと似たような意味です。つまり、仮想端末を用意する、という意味です。
例:Moto G PowerやNexus 5X
※たぶんいくつか種類があるかもしれません。
エミュレートされたデバイスの性能が実際のデバイスほど安定していない可能性があります、ってどこかに書いてありました。。。
ちゃんと安定した仮想端末用意しないのかな><
携帯電話 | デスクトップ | |
CPUの遅さ | 4x | 1x |
このCPUの制限があるために携帯電話の場合は負荷の変動に敏感で、仮にデスクトップの時と同じ処理でも実行する度に時間差が生じる可能性がある、とのことでした。
をイメージすればわかりやすいと思います。
によってスコアが若干変動する、らしいです。
例えばですけど、日本でPageSpeed Insightsのテストをしたとして、
等、サーバーのある場所からの距離、あるいは同じ場所のサーバーでもサーバーごとの負荷も影響するらしいです。
そう言われればそうですけど、普通そこまで思いつきませんよね><
PageSpeed Insightsの計測での携帯電話は、というか実際のモバイル端末でもそうですが、(デスクトップの時と比べて)画像の振り分けだったりcssのメディアクエリだったりjavascriptでも分岐をしていたり・・・というように、携帯電話とデスクトップとでは読み込む順番・読み込む内容が違います。
つまり、処理の順番・処理の内容が異なります。
広告や動的に生成されるコンテンツは、PageSpeed Insightsの計測ごとに異なる結果になる可能性がある、とのことでした。
基本、WordPressは静的htmlではなく動的にコンテンツを生成します。
動的コンテンツの場合は、モバイル環境でより顕著に影響を与えるそうです。
だんたん説明が少なくなってきましたが、だんだん理解・イメージできてきましたよね?ねっ!
初期の輻輳ウィンドウの詳細については
をお読みください。
要は各ファイル1ファイルごとに、圧縮後のファイルサイズが14.6kbを超えるとファイル送信の1車線が一時停止・激遅になる、ということです。
メトリクスとは
のことです。
これらのメトリクスはスコア配分が異なるので、今までこのページに書いたこと全て含めて様々な影響により、PageSpeed Insightsの『パフォーマンスの問題を診断する』のおける携帯電話のスコアはデスクトップのスコアより変動が大きくなる傾向にあります。
サーバー性能は低性能から高性能までと、ピンキリです。
性能が低いサーバーでは各種処理能力・仮想CPUの数・割当メモリ・転送速度も低いです。
また、高性能なサーバーでも料金プランによって仮想CPUの数・割当メモリが違うはずです。
共用サーバー・専用サーバーの違いもあります。
サーバーレスポンスの安定には、リソース保証のあり・なしの影響が大きい気がします。
私は現在共用サーバーで比較的高性能なサーバーの安い料金プラン、仮想CPU6コア・メモリ8GBですがリソース保証はありません。
例えば、私のサーバーアカウント内にWordPressが100個入っていたら、1WordPressあたりのメモリが約82MBしか割り当てられず、WordPressの各処理が大幅に不安定になります。
同様に、例えば1つのサーバーに私含めて1,000人のアカウンが入っていて1サーバーあたりのメモリが512Gbだった場合は1アカウントあたり524MBで、これだと1アカウントあたりぎりぎりWordPress2~3サイト程度です。
WordPressがサーバーに入っている以上、サーバーの性能・その時の混雑具合によってPageSpeed Insightsのスコア計測時だけではなく普段もサーバーの影響は常に大きいです。
もしリソース保証がされていればおそらくかなり安定したサーバーレスポンスが期待でき、WordPressの高速化設定に応じた安定したスコアになるはずです。
以上の要因が複数影響して、携帯電話のスコアは(デスクトップのスコアと比較して)不安定になる・乱高下するようです。
『そのため、複数回のテストの平均値や傾向を見ることが重要です』ってどこかに書いてありましたが、逃げのセリフのような><
・
・
・
とは言え、PageSpeed Insightsの携帯電話のスコアは、高確率で日中(9:00~20:00頃)は30~50点くらい乱高下するので、私は時間帯を少しずらして3~5回計測して、そのうち1・2回90点以上になればOKとしています。
このサイトを立ち上げた時点で表示高速化に関する各種施策は一通り実施済み、PageSpeed Insightsのスコアは
※この時点では、WebフォントはCocoon内蔵フォント(Googleフォントとほぼ同じです)、Cloudflareは未導入です。
その後色々やってみたもののスコアは全く変わらず、さらに色々試行錯誤して
一度試してすぐ元に戻した施策は省略してあります。
ここまでやって
それから約半年の間、たまに思い出しては調べてみるものの日本のサイトには初歩的な対策・実装済みの対策しか書いてない場合がほとんどで、海外のサイトを調べて(右クリックで翻訳して)とりあえず試してみて、ほとんどの場合効果がなく元に戻して・・・を繰り返して、最終的にいくつか追加実装した状況が下記のPageSpeed Insightsのスコアとなります。
※冒頭の画像と同じです。
この段階がこの記事を書く少し前の時点です。
以下、あくまで備忘録なので説明は少なめです。m(_ _)m
PageSpeed Insightsの携帯電話のスコアが高確率で日中(9:00~20:00頃)は30~50点くらい乱高下するわけですが、各メトリクス
の数値を都度よく見てみると、(あくまで当サイトの場合)携帯電話のスコアが90点を切る時は
の数値が悪くなることがほとんどです。
※携帯電話のスコアが90点以上の場合でもFCP・TBTのメトリクスは若干悪くなる時があります。
携帯電話のスコアが70点以下の場合には
の数値がかなり悪くなります。
以下の表は、この記事を書き始めてからの某平日夕方の同時間帯でだいたい30分以内の当サイトのPageSpeed Insightsのスコアです。
●FCP(First Contentful Paint)・・・テキストまたは画像が初めて描画されるまでにかかった時間
●LCP(Largest Contentful Paint)・・・最も大きなテキストまたは画像が描画されるまでにかかった時間
●TBT(Total Blocking Time)・・・タスクの処理時間が 50 ミリ秒を上回った場合の、コンテンツの初回描画から操作可能になるまでの時間
●CLS(Cumulative Layout Shift)・・・ビューポート内の視覚要素がどのくらい移動しているかを測定する指標
●SI(Speed Index)・・・ページが読み込まれて表示されるまでの時間
パフォーマンス (点) | FCP (秒) | LCP (秒) | TBT (ミリ秒) | CLS | SI (秒) |
95 | 1.8 | 2.3 | 180 | 0.003 | 1.8 |
92 | 1.9 | 2.3 | 280 | 0.004 | 1.9 |
90 | 1.8 | 2.3 | 340 | 0.003 | 1.8 |
90 | 1.7 | 1.7 | 380 | 0.003 | 1.7 |
89 | 1.8 | 1.8 | 380 | 0.004 | 2.6 |
89 | 1.9 | 2.3 | 350 | 0.003 | 1.9 |
89 | 1.9 | 2.3 | 370 | 0.003 | 1.9 |
88 | 1.9 | 2.3 | 390 | 0.003 | 1.9 |
87 | 1.8 | 2.3 | 420 | 0.004 | 1.8 |
86 | 1.9 | 2.3 | 440 | 0.003 | 1.9 |
85 | 1.8 | 2.3 | 470 | 0.003 | 1.8 |
85 | 1.8 | 2.3 | 490 | 0.003 | 1.8 |
81 | 1.8 | 2.3 | 630 | 0.003 | 1.8 |
81 | 2.0 | 2.3 | 630 | 0.003 | 2.0 |
80 | 1.8 | 2.3 | 710 | 0.004 | 1.8 |
72 | 4.3 | 4.7 | 130 | 0.004 | 4.3 |
68 | 4.8 | 5.3 | 50 | 0.003 | 4.8 |
パフォーマンス (点) | FCP (秒) | LCP (秒) | TBT (ミリ秒) | CLS | SI (秒) |
※上記携帯電話のスコア全スコアとも、ユーザー補助・おすすめの方法・SEOは全て100点
※デスクトップは、パフォーマンス・ユーザー補助・おすすめの方法・SEOの全てほぼ100点(たまにパフォーマンスだけ96~98点という時がありました)
各メトリクスの数値がどれくらいだとスコアが何点になるか、シミュレーションできます!
↓
Lighthouse Scoring Calculator
おそらく70点以下になる時は、共用サーバーなので何かしらの原因でサーバーレスポンスが激遅になってそれが原因で上記3つのメトリクスが超悪くなる・・・と個人的に予想していています。
WordPressのメモリは必要以上に確保してあるので、サーバープランをアップグレードするか専用サーバーに変更しない限り、改善できない気がします。
携帯電話のスコアも比較的安定して90点以上を連発するようにするには、(あくまで当サイトの場合)表示速度を200ミリ秒改善できればFCP・TBTの両方とも合格になり、そうすれば全て合格で緑色・90点以上になる可能性・頻度が高いと判断し、それが『200ミリ秒改善』の根拠です。
■注意■
以上の分析については、あくまで当サイトの場合です。
画像の遅延読み込みやWebP対応など、初歩的な施策を全て実装済みのサイト以外には参考にはなりません。
以下、上記のような状態から表示速度を200ミリ秒速くしようともがいて実装した施策です笑
あくまで備忘録なので説明は少なめです。m(_ _)m
結論を先に書きますと、下記施策を全て実施して表示速度を200ミリ秒速くできたとは思いますが、PageSpeed Insightsの携帯電話のスコアの不安定・乱高下は完全には改善できていません。
たまに携帯電話のスコアが70点以下になる時があり、この現象の原因は(あくまで私の予想ですが)共用サーバーの安い料金プランだから、だと予想しています。
※安いと言っても月額1,000円くらいの普通のやつで、サーバー自体の性能はけっこう良いです。
サーバーレスポンスが原因でPageSpeed Insightsの携帯電話のスコアが70点以下になったと思われる時のスコアは(当サイトの場合)必ず
の数値がかなり悪くなります。
それ以外の時のスコアはかなり改善でき、おそらく
で落ち着いています。
実機での表示速度は(全てのキャッシュから除外しているお問い合わせページ以外は)ほぼ爆速になり、過去10数年間でWordPressサイトを1,000~2,000サイトは作成してきましたが、当サイトの表示速度は間違いなく過去最高速度です!
私がこのサイトで使っているテーマは Cocoon です。
おそらく10年か15年以上前から使い始め、サイトを作成する度に改良を加えてきました。
昔のWordPressの投稿編集画面のビジュアルエディタは(今でも)全く信用できなくて、その後のブロックエディタ(Gutenberg)も発表当時はSEO的に良くなさそうだった(今は少しマトモかもしれません)ので今でも無効にしたまま・・・ということもありますが、クラシックエディタのメニューを改造して色々ボタンを追加してあることが、クラシックエディタを使い続けている1番の理由です。
テーマ内の色々なファイルを修正・追加してあり当然cssは超多く、今数えたらcssの文字数は、子テーマ内のstyle.cssおよびhead内に記述したクリティカルcss部分をあわせると約80,000文字ありました。。。
※css内のコメント含む & 一部最初から空行除去した状態で存在しています & 親テーマのcssは含んでません。
コメントを除いてもたぶん70,000文字はありそうです><
昔はモバイルファーストという概念がなかったこともあり、私のCocoonはデスクトップファーストになっていましたので、今回重い腰を上げて、モバイルファーストに変更しました。
これがけっこう大変で、例えば単にメディアクエリを上下入れ替えるだけだと色々おかしくなります。
PCとモバイルでcssを分けてみるのも試しましたが、PageSpeed Insightsのスコアは若干低下し、また体感の表示速度も少し遅くなった気がしたので、それはやめました。
元々私なりに頑張って高速化してあるheader.php内の<head>にて、記述する内容および記述する順番を変更しました。
Firefoxの開発者ツール・Chromeのデベロッパーツールのネットワークで確認してみと、(当サイトの場合)いくつかのタグの順番を変更すると若干ですが速くなっている気がします。
Before・Afterそれぞれ5~10回くらいブラウザで表示して・・・の体感なので不正確です。
微々たる改善にしかなりませんが若干は改善したような気がしますし、プラシーボかもしれません><
元からスクリプトの非同期読み込みの施策はしてありましたが、再度
等、少し修正・改良しました。
同様に、.htaccess内の記述の整理・統合をしました。
これが超面倒でした。。。
以下、私が後で『あれ、◯◯ってどうなってるんだっけ?』となった時のためのメモ・備忘録なので、私自身読んでても楽しくありません
m(_ _)m
PWAってご存知でしょうか?Progressive Web Appsの略で、WebサイトをアプリのようにPCやモバイル端末にインストールでき、オフラインでも読めるようにする技術のことです。
PWAで使用されているService Workerという技術?があり、これを利用してキャッシュ専用のサービスワーカーを実装しました。
PWA自体は一時期人気が出そうでしたが結局今では下火になっています。
サービスワーカーの導入・その他により、結果的に当サイトはPWAに対応しています。
サービスワーカーのキャッシュ戦略は主に
の6つあります。
私はプログラマーではないのであまりというか全然詳しくありませんので、気になる方はググってみてください。
当サイトの場合、4番目の『Network First』戦略を採用しています。
ただし、完全な『Network First』ではなく、一部『Stale While Revalidate』の要素も含んでいます、らしいです。
・
・
・
と思っていましたが、よくよく調べたら上記にはない『Cache First with Network Fallback』戦略みたいでした。
もはやどうでもいいんですけど。
■初回訪問時
ネットワークからリソースを取得し、サービスワーカーのキャッシュに保存します。
※サービスワーカーのキャッシュの有効期限は(現時点では)1週間
■2回目以降の訪問
まずキャッシュをチェックします。
サービスワーカー内に有効なキャッシュがあればそれを返し、サービスワーカーに該当キャッシュがない、あるいは該当キャッシュが期限切れの場合、ネットワークリクエストを試行します。※最大3回まで
ネットワークリクエスト成功時はレスポンスを返し、キャッシュを更新します。
ネットワークリクエスト失敗時は再度キャッシュをチェック※古くても使用。
ネットワークリクエストも3回失敗しサービスワーカーのキャッシュもない場合はエラー※あくまでサービスワーカーとしてのエラーであって、(当サイトの場合)実際は後述のCloudflareのキャッシュが使われます。
ですので、PCでネットワークが切断状態でもモバイル端末で機内モードであっても、サービスワーカーのキャッシュが存在していれば、(プライベートウィンドウ・シークレットウィンドウでなければ※後述)ページが表示されます。
※その該当キャッシュの有効期限が切れていても古いキャッシュを使ってページを表示します。
ただし、『WordPress管理画面がぶっ壊れた!』等、ネットワークは有効でフロントページが真っ白とかの場合は、真っ白なページが表示されます。
WordPress管理画面がおかしくなっても正常なフロントページを表示するには
の2択かと思います。
※1 静的HTMLのプラグイン『Simply Static』があまりにも不安定なので、最終的に当サイトでは使うのはやめました。
※2 これじゃダメかもしれません。
オフライン目的なら、PWA対応のテーマとかPWAのプラグインを使うという手もあります。
当サイトでのサービスワーカーはオフラインが目的ではありません。
サービスワーカーのキャッシュの中身を確認するには
●Firefoxの開発者ツールなら、ネットワーク → ストレージ → キャッシュストレージ
●Chromeのデベロッパーツールなら、ネットワーク → アプリケーション → ストレージ → キャッシュストレージ
にある該当サイトをクリックするとキャッシュされたファイルの一覧が表示されます。
プライベートウィンドウ・シークレットウィンドウの場合はサービスワーカーは稼働しません。
この場合は他の諸々のキャッシュが使われます。
●通常のウィンドウ(2回目以降の訪問時)
サービスワーカーが有効に稼働している場合は、
プロトコル:HTTP/1.1
転送量:Service Worker
となります。
●プライベートウィンドウ(2回目以降の訪問時)
赤色のブロックしてるやつはアナリティクスのコードで、(当サイトの場合)マウスを動かすか・タップするか・スクロールするまでアナリティクスのタグを遅延読み込みしているせいです。
プライベートウィンドウではサービスワーカーはたとえインストールされていても稼働しないので、
プロトコル:HTTP/2 あるいは HTTP/3※
転送量:キャッシュ
となります。
※サイトの設定やJavascriptが展開するコード等によって異なります。
この場合のキャッシュは、(当サイトの場合)Cloudflareのキャッシュです。
サービスワーカーは初回訪問時はほとんど効果ありませんが、2回目以降はかなりの効果があります。
当サイトは元々けっこう高速化してあるのでわかりづらいですが、1番右側の『読み込み時間』付近を拡大すると・・・プライベートウィンドウ(Cloudflareのキャッシュ):18ms
通常のウィンドウ(サービスワーカーのキャッシュ):0ms
Cloudflare導入の時点でかなりの表示速度なのでたいした違いに見えませんが、実機では表示速度の違いが体感できるレベルで速くなっています。
通常のウィンドウの画像だけ、1番右側の『読み込み時間』付近を拡大すると
アナリティクスのコード(上記では52msの箇所)以外は全てサービスワーカーのキャッシュです。
Chromeは色々勝手に先読み込みするので速度の違いがわかりづらいと思います。
私がPCで常用しているFirefoxはリンクにマウスオーバーしたら先読み込みしますが、やはり速度の違いが分かりづらいです。
私がandroidで常用している、Chromeではない少し古いブラウザアプリだと速度の違いが体感できました。
先ほど書いた、
■2回目以降の訪問
まずキャッシュをチェックします。
サービスワーカー内に有効なキャッシュがあればそれを返し、サービスワーカーのキャッシュがない、あるいは該当のキャッシュが期限切れの場合、ネットワークリクエストを試行します。※最大3回まで
サービスワーカーが有効でサービスワーカーのキャッシュがあり(普通は2回目以降なら必ずある)そのキャッシュが有効期限内であれば、(サービスワーカーのキャッシュから除外しているものを除いて)おそらくほぼ全てのファイルがサービスワーカー内にキャッシュされるので、2回目以降の訪問では最初のネットワークリクエスト以降はネットワークリクエストがほぼ発生しません、と思います。
※当サイトの現時点では、サービスワーカーのキャッシュの有効期限は1週間に設定しています。
ただし、キャッシュ目的でサービスワーカーを導入するとキャッシュの管理が面倒になります。 後述します。
その前に、色々なキャッシュの種類について整理します。
サーバー側で動作し、頻繁にアクセスされるデータをRAMに保存します。
データベースクエリの結果やPHPの処理結果をキャッシュし、サーバーの負荷を軽減します。
ユーザーのブラウザ側で動作し、静的リソース(画像・CSS・JavaScript等)を保存します。
再訪問時にこれらのリソースをサーバーから再ダウンロードする必要がなくなります。
例、W3 Total Cache
サーバーとブラウザの間で動作し、ページキャッシュ・データベースキャッシュ・オブジェクトキャッシュ等を提供します。
動的コンテンツの静的化やリソースの最適化を行います。
CDN(コンテンツ・デリバリー・ネットワーク)として機能し、世界中のエッジサーバーでコンテンツをキャッシュします。
ユーザーに最も近いサーバー(エッジキャッシュ)からコンテンツを配信し、レイテンシー(遅延)を低減します。
ブラウザ内で動作するJavaScriptファイルで、ネットワークリクエストを制御します。
オフライン機能の提供やカスタムキャッシュ戦略の実装が可能です。
これ以外に私の場合は、Cocoonのキャッシュもあります。。。
Cocoon設定 →キャッシュ削除の『全てのキャッシュの削除』の箇所の説明に、
とありますが、これが、Cocoon設定 → 高速化にある
あるいは
等、公式サイト・公式フォーラム・その他ググっても見つかりませんでした。
Cocoonのキャッシュが何をどこまでキャッシュしているのか、いまいち不明です。。。
色々あって、おじさん困っちゃいます><
正直もうお腹いっぱいで、段々説明が雑になっててすみません。。。
Cocoonのキャッシュはよくわかりませんので、それ以外のキャッシュについて、
■リクエストの流れ
ユーザー → サービスワーカー → Cloudflare → W3 Total Cache → サーバーキャッシュ → オリジンサーバー
■レスポンスの流れ
オリジンサーバー → サーバーキャッシュ → W3 Total Cache → Cloudflare → サービスワーカー → ブラウザキャッシュ → ユーザー
つまり、ブラウザ内で動作するサービスワーカーのキャッシュ元は(当サイトの場合)Cloudflareのエッジキャッシュということになります。
■相互作用
各キャッシュ基本的には独立して動作しますが、設定次第で相互に補完し合います。
例えば、W3 Total CacheはCloudflareと連携・統合して、キャッシュの有効期限や除外ルールを調整・設定できます。
あるいは、サービスワーカーはCloudflareのキャッシュと連携して、オフライン時のフォールバック戦略を実装できます、とのことらしいです。
■注意■
上記の流れを見ると『Cloudflareを導入すれば超しょぼいサーバーでもOKじゃん!』と思いますがそれは間違いで、実際は全てのリクエストがCloudflareのキャッシュにヒットするわけではありません。
ヒットしなかった場合は上記流れの場合ではW3 Total Cacheのキャッシュでページ表示しますが、W3 Total Cacheのキャッシュもサーバーに依存しますし、オブジェクトキャッシュ等はサーバーのメモリあるいはディスクに保存されます。
また、WordPressはバックグラウンドで各種PHP・JavaScriptが動的に動いていますので、結局はサーバーの性能・混雑具合等の影響を受けることが多々あります、と思います。
PageSpeed Insightsの『パフォーマンスの問題を診断する』の計測におけるキャッシュの扱いについて説明します。
PageSpeed Insightsは毎回新しい仮想環境でテストを行います。
つまり、PageSpeed Insightsは初回アクセス時のパフォーマンスを測定するために後述の”ブラウザ関係のキャッシュ”がない状態でページを読み込みます。
これはPageSpeed Insightsが初回訪問者のパフォーマンスを想定し、最も厳しい条件下で計測・評価するためです。
ただし、全てのキャッシュが無効になるわけではなく、有効なキャッシュ・無効なキャッシュがあります。
■有効なキャッシュ
■無効なキャッシュ
要は、サーバーに関係するキャッシュは有効、ブラウザに関係するキャッシュは無効です。
少し補足説明します。
■■■有効なキャッシュ■■■
■サーバーキャッシュ
サーバー内でのデータベースクエリやPHPの処理結果のキャッシュはPageSpeed Insightsの計測時にも機能します。
これはサーバー内で処理されるキャッシュであり、PageSpeed Insightsがその内部の動作を無効化することはできないためです。
■WordPressのキャッシュ系プラグイン
プラグインが提供するキャッシュ(ページキャッシュやオブジェクトキャッシュなど)もサーバー側で動作します。
これも計測時に有効となり、本来WordPressが動的に生成する各ページの静的化や最適化が行われます。
■Cloudflareのキャッシュ(CDNのキャッシュ)
CloudflareのようなCDNサービスを利用している場合、コンテンツはエッジサーバーにキャッシュされます。
PageSpeed Insightsの計測においてもオリジンサーバーの代わりにエッジサーバーからコンテンツが提供されるため、有効なキャッシュです。
■■■無効なキャッシュ■■■
■ブラウザキャッシュ
PageSpeed Insightsのテスト環境は毎回新しい訪問者としてページをロードするため、ブラウザキャッシュは利用されません。
ユーザーの端末に保存された静的リソース(画像やCSSなど)は計測に影響を与えません。
■サービスワーカーのキャッシュ
サービスワーカーはブラウザ側で動作してキャッシュを制御しますので、PageSpeed Insightsでは無効です。
したがってPWAの時のような、サービスワーカーによるオフラインキャッシュやカスタムキャッシュ戦略の恩恵は受けられません。
以上のように、PageSpeed Insightsでは基本的に毎回キャッシュのない状態で測定が行われるため、1回目の計測でも2回目の計測でも”ブラウザ関係のキャッシュ”は無効、関係ありません。
PageSpeed Insightsはブラウザキャッシュに関してチェックはしていますが、ブラウザキャッシュは利用していません。
1回目の計測後すぐに2回目の計測をした場合でも”ブラウザ関係のキャッシュ”が効いていない状態で測定されます。
※PageSpeed Insightsの計測は30秒~1分あけないと、再計測できません。
前述した通り、PageSpeed Insightsのスコア、特に携帯電話のスコアはかなり変動があります。
これは、
など、様々な要因によるものです。
ですので、PageSpeed Insightsは複数回計測してみて、例えば『5回計測してスコア90点以上が1回あればOK!』とある程度割り切って使うことをオススメします。
なお、実際のユーザーの端末では適切にキャッシュが設定されていれば”ブラウザ関係のキャッシュ”も有効になり、2回目以降のアクセス時には効果的です。
特にサービスワーカーのキャッシュは2回目以降のアクセス時にはかなり効果的です、どころではなく爆速になります!
ただし、サービスワーカーは万人向けではないです!
今までサービスワーカーについて長々と書きましたが、デメリットというかマイナスな点が2つあります。
サービスワーカーはユーザー端末のブラウザにインストールされて、ブラウザキャッシュとは別のキャッシュとして機能します。
●これをサイト運営者側が削除するには、
①は次回アクセス時にサイト運営者・ユーザーの両方のサービスワーカーのキャッシュが更新されます。
②はサイト運営者のそのブラウザ内のサービスワーカーのキャッシュが削除されるだけで、ユーザー端末のブラウザ内のサービスワーカーのキャッシュはそのままです。
③は知っていれば数クリックで削除することは可能ですが、これもサイト運営者のブラウザ内のサービスワーカーのキャッシュが削除されるだけです。
煩雑に記事追加・更新している場合やテーマファイルの修正をしている場合は面倒です。
特にテーマのphpファイルの修正、あるいは何らかの理由で今すぐ全てのキャッシュを削除したい場合に、キャッシュ系プラグインならたいていはWordPress管理画面の管理バーにキャッシュ削除用のボタンが追加されていてポチポチすればそれぞれのキャッシュを削除できますが、普通はサービスワーカーの場合は管理バーにキャッシュを削除するボタンがありません。
●一方、一般ユーザーがサービスワーカーのキャッシュを削除するには
ユーザーが自発的にサービスワーカーの登録解除をすることはほぼありませんので、普通は⑥はありえません。
というか、普通はサービスワーカーの存在はサイト運営者しか把握してないはずなので、一般ユーザーがわざわざ③④⑤を実行する可能性はゼロに等しいです。
つまり、①以外ではユーザー端末のブラウザ内のサービスワーカーのキャッシュはそのままです。
キャッシュの種類が多すぎて、全削除したい時に超面倒です。
特にサービスワーカーを導入してから、プラグイン(例、Autoptimize)の生成処理の際に、静的HTMLのプラグイン『Simply Static』が不安定なのと同様、
といった感じで、見分けがつかずイライラします。
※今は『Simply Static』は使っていません。
キャッシュを全削除するには、(個々のキャッシュ削除の他に)サービスワーカーのキャッシュを削除して、その次にサービスワーカーの登録を解除して、念のためにブラウザをリロードして・・・の順番でサービスワーカーを無効にする必要があります、たぶんですけど。
これが超面倒で、さんざんググって、管理バーにサービスワーカーのキャッシュクリア・登録解除をするボタンを追加しました。
管理バー(adminバー)とはWordPressにログインしてる状態の時に1番上に表示されるバーのことです。
ここにサービスワーカーのキャッシュクリア・登録解除のボタンを追加しました。
この『SW制御』ボタンをクリックすると
上記のようなポップアップが表示され、あとは念のためブラウザをリロードすれば良いだけです。
■追記■
上記ボタンを少し改良しました※後述
管理バーにある個々のボタンにて、以下の手順で削除する。
①W3 Total Cache:パフォーマンス →Perge All Caches
②念のため、Cloudflare管理画面でも『すべてパージ』
※W3 Total CacheをCloudflareと連携させているので、上記W3 Total Cacheのキャッシュクリアの段階でCloudflareのキャッシュもクリアになってるはずですが、念のため。
③サービスワーカー:『SW制御』ボタンをクリック
③サービスワーカー:『SW制御』のサブメニュー『サービスワーカー全削除』をクリック
その後、念のためブラウザをリロードして、プラグイン(例、Autoptimize)の生成処理を実行
この手順でエラーなしで全キャッシュ削除でき、プラグイン(例、Autoptimize)の生成処理も今のところ問題なさそうです。
■メモ
海外サイトで調べた限りでは、
サービスワーカーの登録を解除
↓
FTPにて、サービスワーカーのJavaScriptをいったん削除
↓
ブラウザをリロード
↓
W3 Total Cache等のキャッシュを削除
↓
(念のため)Cloudflareのキャッシュを削除
↓
ブラウザのキャッシュをクリア※たぶん必須ではない
↓
プラグイン(例、Autoptimize)の生成処理
↓
FTPにて、サービスワーカーのJavaScriptを再アップロード
↓
サイトを開いてリロード
という超絶面倒な流れでしたが、たぶん上記『SW制御』ボタンを追加したことにより、(今のところ)FTPでの削除・再アップロードは不要な感じです。
■最終追記■
現在は、
ので、adminバーにある、
パフォーマンス → Purge All Cachesにて、W3 Total Cacheのキャッシュをクリア
↓
『SW制御』のサブメニュー『サービスワーカー全削除』にて、サービスワーカーのキャッシュクリア
だけでOKなので超楽ちんな上、10年以上解決されてないAutoptimizeのバグも関係ないです。
サービスワーカーのキャッシュ戦略
当サイトの場合、7. Cache First with Network Fallback戦略だと問題があることが発覚し、5. Stale While Revalidate戦略に変更しました。
ずばり、キャッシュの有効期限が切れない限り、キャッシュの確認・更新はされません。
例えば『記事を修正あるいは新規記事を追加※1』した場合に、
古いキャッシュ:※1が反映されていないキャッシュ
新しいキャッシュ:※1が反映されたキャッシュ
修正前のCache First with Network Fallback戦略の時は、リロード・スーパーリロードしても新しいキャッシュでもってページ表示されず古いキャッシュのままでした。
修正後のStale While Revalidate戦略では、記事を修正・新規追加してリロード・スーパーリロードすると即時に新しいキャッシュに置き換わります。
※後述しますが、ブラウザによってはリロード・スーパーリロードしてもすぐには新しいキャッシュでの表示にならない可能性もあり、その場合は3回目の訪問時に新しいキャッシュでもってページ表示されます。
■注意■
どのキャッシュ戦略の場合でも、サービスワーカーのスクリプト自体の更新チェックはおおよそ24時間毎にバックグラウンドで自動でチェックが走ります。
■■■Cache First with Network Fallback戦略の場合■■■
■初回訪問時
ネットワークからリソースを取得し、サービスワーカーのキャッシュに保存されます。
■2回目以降の訪問時
まずキャッシュをチェックします。
サービスワーカー内に有効なキャッシュがあればそれを返し、サービスワーカーに該当キャッシュがない、あるいは該当キャッシュが期限切れの場合、ネットワークリクエストを試行します。
※当サイトの場合、サービスワーカーのキャッシュの有効期限は7日間・キャッシュの自動確認は24時間ごとに設定していました。
ネットワークリクエスト失敗時は再度キャッシュをチェックします
※当サイトの場合、最大3回までネットワークリクエスト成功時はレスポンスを返し、キャッシュを更新します。
(当サイトの場合)ネットワークリクエストも3回失敗しサービスワーカーのキャッシュもない場合はエラーとなります。
ただしこのエラーはあくまでサービスワーカーとしてのエラーであって、実際はサーバーのリソースあるいはキャッシュ系プラグインのキャッシュ(当サイトの場合はCloudflareのキャッシュ)が使われます。
つまり、リロード・スーパーリロードを行っても、キャッシュが存在する限りその古いキャッシュが使用されます。
■初回訪問時
サービスワーカーがインストールされ、新しいキャッシュが保存されます。
■2回目以降の訪問時
ブラウザ保存されているサービスワーカーの古いキャッシュでページが表示され、同時に、古いキャッシュが新しいキャッシュで置き換わります。
この時点ではリロードあるいはスーパーリロードしない限り古いキャッシュでページが表示されます
さらに再度訪問した際(つまり3回目)には、新しいキャッシュでページが表示されます。
先ほど書いたように、2回目訪問にユーザーがページのリロード・スーパーリロードをした場合は、即時に新しいキャッシュでもってページが表示される・・・という可能性が高いです。※2
※2 ブラウザによってリロード・スーパーリロードの中身が少し異なるらしく、※2が実行されない可能性もある、らしいです。
つまり、リロード・スーパーリロード時に新しいキャッシュが即時に反映される可能性が高いです。
当サイトの場合は、5.Stale While Revalidate戦略への変更に加え、
を追加しました。
一般論で言うと、初回訪問時はどのキャッシュ戦略でも表示速度の違いはありません。
2回目以降の場合は、一般的にはStale While Revalidate戦略よりもCache First with Network Fallback戦略の方が表示速度が速い傾向にあります。
■Cache First with Network Fallback戦略の場合は、2回目以降の訪問時は(キャッシュがあれば)常に古いキャッシュを表示します。
キャッシュの有効期限が切れない限り、キャッシュの確認・更新はされません。
その代わり、表示速度は常に非常に高速です。
Cache First with Network Fallback戦略キャッシュの削除が難しく・新しいキャッシュの反映が遅いです。
■Stale While Revalidate戦略の場合は、2回目訪問時は(キャッシュがあれば)古いキャッシュでページ表示します。
と同時に、バックグラウンドでキャッシュの確認・更新をおこないます。
2回目訪問時にリロード・スーパーリロードした場合あるいは3回目の訪問時に新しいキャッシュでページ表示します。
表示速度を最優先・マストにするのか、表示速度を優先しつつサイトの最新の情報をできるだけ早く反映したいのか・・・どのような考えに基づきサービスワーカーを導入・運用するのかによって違ってきます。
当サイトの場合、Stale While Revalidate戦略への変更および関係ファイルへの機能追加・修正・改良等により、Cache First with Network Fallback戦略の時と比べると表示速度がほんの少し遅くなりました、と思います。
と言ってもPC・モバイルのChromeでは表示が遅くなったことはたぶん体感・確認できないレベルで、私もandroidの古いブラウザアプリでしか体感で違いがわからなかったレベルです。
管理バーの『SW制御』ボタンを改良して、サブメニュー内に
と変更しました。
サービスワーカー全削除:サービスワーカーのキャッシュ削除・登録解除・キャッシュバージョンの更新
CACHE_VERSIONの更新:キャッシュバージョンの更新のみ
『サービスワーカー全削除』『CACHE_VERSIONの更新』のどちらの場合でも、実行前の確認・更新結果をポップアップで表示して、その後ブラウザのリロードまで実行します。
&
サービスワーカーのキャッシュ削除・登録解除しても、それは私のブラウザ内だけです。
以上で表示高速化に関する当サイトの施策(サービスワーカーを中心とした、最後の施策)についての記述は終了です。
私はエンジニア・プログラマーではありませんので、サービスワーカーの導入および管理バーにボタンを追加するのは色々と大変でした。
全くもって、一般的にはオススメできません。
ここまでお読みの方ならわかるように、サービスワーカーを導入すると(一般的には)キャッシュ削除・キャッシュ管理が難しくなります。
そもそも普通は導入も難しいです。
■結論■
サービスワーカーを導入しなくても、細かい箇所まで一通りの高速化設定・施策をしっかりやって、その上でCloudflare(無料プランでOKです)の各種設定をしっかりやれば、表示速度はかなり速くなります!
あくまでどちらも しっかり がマストです。
ただし、サービスワーカーを導入してちゃんとキャッシュ管理できるようになれば、2回目以降の訪問時のサイト表示速度はWordPressとは思えないほど爆速になります!
表示速度に関してはおそらく平均して150~200秒の改善は達成できたような気はしますが、PageSpeed Insightsに関してスコアを常に90点以上で安定させることは未達です。
体感的には(お問い合わせページ以外は)ほぼ常に爆速な表示速度ですが、数回に1回、携帯電話のスコアが70点前後まで落ちます。
デスクトップのスコアは常にほぼ100点です。
これは共用サーバーかつリソース保証のない料金プランなのが主な原因と予想しています。
できることなら携帯電話・デスクトップともに全て100点にしたかったですが、
という状況では、携帯電話のスコアも全て100点にするのは私には無理でした。。。
あとは携帯電話のパフォーマンスを3点UPするのみでしたが、パトラッシュな状態なのでひとまず終了とします。
なお、お問い合わせページはJavaScript満載ですがW3 Total Cache/Cloudflare/サービスワーカーのキャッシュから除外してあり、素のWordPressの表示速度です。
と言っても可能な範囲で表示高速化してあります。
■追記■
当サイトとは別のサブドメインをサーバー管理画面で追加して、Cloudflare管理画面でもそのサブドメインについての各種設定およびwww付きサブドメイン、つまりwww.サブドメイン.ドメインの設定※1も追加したら、
ともに表示速度が遅くなりました、というかだいぶ端折って書くと、いくつかのキャッシュプラグインの挙動が一層不安定になりました。
※1の設定を追加しないと(WordPressであってもなくても) www.サブドメイン.ドメイン が サブドメイン.ドメイン にリダイレクトできません。
ともに表示速度が遅くなったのは※1のせいではなくてCloudflareの1つのアカウント内に2サイトぶん入れたのが原因かと一瞬思いましたが、別のCloudflareのアカウントではサブドメイン含めて5サイトぶんが1つのCloudflareアカウント内に入っていて問題ないです、たぶん。
ですので現時点ではハッキリとした原因はわかりません。原因はCloudflare内部?の挙動にあることはわかりましたが、私の設定ミスではないのでどうにもならない気がします><
仕方ないので、上記追加したサブドメインをCloudflareのキャッシュから除外しました。
※エッジキャッシュから除外しているだけでCloudflareを経由します。
ついでに両サイト(コンテンツ・テーマのcss以外はほぼ同じ)とも、動作が不安定になりがちなキャッシュプラグイン(複数)を無効化・アンイストールして、できるだけテーマ『Cocoon』あるいはプラグイン『W3 Total Cache』内の似ている機能に集約しました。
つまり、表示速度に関して極限まで攻めるのはやめて、操作性・安定性を優先しました。
若干表示速度は遅くなりましたが、使用中のプラグインは38個から35個に減りました!
両サイトの表示速度がよほど我慢できない、あるいは、何かしら問題が発生しない限り、当サイトの表示高速化・PageSpeed Insights対策はこれで終了です。
ページの表示高速化に関して約1年間色々試してきましたが、最終的にCloudflareのエッジキャッシュを無効にしてバイパスすることにしました。
つまり、Cloudflare自体は有効化したまま、Cache Rulesにて「すべてのキャッシュをバイパスする」のルールを有効化しました。
私は2つのCloudflareアカウント(どちらも無料プラン)に、ドメイン・サブドメインが8サイトぶん登録・設定してあります。
■Cloudflareアカウントその1
ドメイン:1個
サブドメイン:1個
■Cloudflareアカウントその2
ドメイン:1個
サブドメイン:5個
WordPressの知識・Cloudflareの知識も素人ではありません(と思います)が、Wordpress側およびサーバー側の各種高速化設定・キャッシュ設定を極限まで高速化してある状態で、
■Cloudflareのエッジキャッシュを有効
Pagespeed Insightsのスコアは
となります。
■Cloudflareのエッジキャッシュを無効
※Cloudflare自体は有効のまま、Cache Rulesにて「すべてのキャッシュをバイパスする」
Pagespeed Insightsのスコアは上記全てのサイトが
となります。
WordPress・サーバー・Cloudflareそれぞれの設定を見直しましたが、なぜCloudflareのエッジキャッシュを有効にするとPagespeed Insightsのスコアが低下するのかの原因はハッキリとわかりませんでした。
■原因(予想)その1
Cloudflareアカウントに複数ドメインを登録してあるのでCloudflareのDNSレコードが単純ではないために、
ユーザーのリクエスト → Cloudflare → オリジンサーバー
という、ひと手間入ったDNS処理だからなのか、とも思いましたが、現時点でエッジキャッシュを無効にしてバイパスしていてもDNSの流れは同じです。
■原因(予想)その2
Cache Rulesが複雑だから、と思う方もいるかもしれませんが、6サイトぶんの処理が必要な「Cloudflareアカウントその2」は確かに少し複雑ですが、「Cloudflareアカウントその1」のCache Rulesは(全サイトバイパスする前の時点では)2つしかありません。
ということで現時点では、Cloudflareのアカウント自体は有効にして諸々設定したまま、Cache Rulesにてエッジキャッシュを無効にしてバイパスした状態となっています。
じゃあCloudflareを導入している意味はないんじゃないの?と思いますが、ほぼその通りですが
エッジキャッシュを無効にして全てバイパスしたほうがPagespeed Insightsのスコアが良くなるのはあくまで当サイトのようにサイト側・サーバー側で極限まで高速化してある場合の話です。あるいは、当サイトのCloudflareのDNSレコード設定がおかしいのかもしれません。
&
エッジキャッシュを無効にして全てバイパスすると、サーバーの負荷・リソース使用量は増えますのでご注意ください。
まあ、この1年の試行錯誤の結論としては、
■Wordpressのキャッシュプラグイン等で高速化してないサイト
Cloudflareで適切に設定すれば表示高速化できます。
■海外のサイトからのアクセスが多いサイト
Cloudflareで適切に設定すればエッジキャッシュで表示高速化できます。
■国内のアクセスがほとんど、かつ、PVがかなり多いサイト
Cloudflareで適切に設定すればエッジキャッシュでサーバーの負荷低減が可能です。
■Wordpressのキャッシュプラグイン等で極限まで高速化してあり、かつ、国内のアクセスがほとんどのサイト※当サイトはこれ
特にCloudflareを導入する必要はありません。
■注意■
Cloudflareは無料プランで全く問題ありませんが、適切に設定することがマストです。
不十分な設定・間違った設定をすると、
等、致命的なことになります。。。
Cloudflareを導入して表示高速化できるかどうかについては、現状何をどこまで高速化設定してあるのかによって異なります。
当サイトのようにWordpressのテーマ・キャッシュプラグインおよびサーバーの各種設定等で極限まで高速化してある場合は、Cloudflareで適切に設定したとしてもPagespeed Insightsのモバイルスコアは低下します><
体感的な表示速度ははほぼ同じです。
あるいは、当サイトのCloudflareのDNSレコード設定がおかしいのかもしれません。
上記8サイト、CloudflareのCache Rulesにてエッジキャッシュを無効にしてバイパスした状態で、Pagespeed Insightsのスコアは以下の通りです。
SEOスコアが60点台の5サイトは、会員専用サイトなのでnoindexにしてあるから。
SEOスコアが92点のサイトは、どうでもいいサイトなのでトップページページしかなく、メタディスクリプションが未記入だから。
テーマがCocoonではなくSEO重視のテーマではないのでメタディスクリプションの設定項目がない & テーマのheader.phpで追加するほどのサイトでもないのでこのまま放置です。
ユーザ補助のスコアが93点のサイトはLaravelのサイトで、ボタン・見出しの背景色と前景色のコントラスト比が足りてないから。
コントラスト比を修正してスコア100点にしてみましたが色合いが好きじゃないので元に戻しました。
8サイトとも、Cache Rulesにてエッジキャッシュを無効にしてバイパスした状態でのPagespeed Insightsのスコアが
となっています。
結局のところ、当サイトのサービスパッケージの
よりも
の最上位プランのほうが確実に表示速度改善になります!
表示高速化に関しては世界中のサイトを調べてその都度試して今に至りますので、今後革新的な表示高速化技術とかが発表されない限り、当サイトの表示高速化についての施策はたぶん終了です。
ということで、たぶんもう二度と試す機会がないと思って、
も導入してみました。
以下、完全にメモですm(_ _)m
当サイトではWorkers KVを導入すると表示速度が逆に若干遅くなったような感じがしましたので、現在は
となっています。
■追記■
Workers KVまで導入すれば常に表示速度が安定しTTFBもより速くなるはずですが当サイトの場合イマイチでしたので、 Workers KV・Cloudflare Workerともに全削除しました。
※手順は全てメモしてあるので、再設定・再構築は可能です。
サービスワーカーは導入したままです。
まあ、私のコードが微妙だった可能性も多々あります。。。
Cloudflare Workerは、Cloudflareのエッジネットワーク上で動作するサーバーレスプラットフォームです。
■エッジコンピューティング■
Cloudflareの世界中のデータセンターで自動的に展開され、ユーザーに最も近いCloudflareのデータセンターでコードを実行します。
低レイテンシーと高速なレスポンスを実現します。
つまりCloudflareはエッジサーバー上で・エッジキャッシュ上で実行・保存されます。
■低コスト■
有料サービス(リクエスト量に応じた料金体系)ですがで、毎月最初の10万リクエストは無料です。
キーバリューストアとして機能し、データを永続的に保存。
以下、省略m(_ _)m
エッジサーバーで実行されエッジキャッシュ上に長期データ保存が可能ですが、実装の複雑さ・読み書きの制限等、難易度高めです><
有料サービス(読み取り/書き込み回数とストレージ量に応じた料金体系)となっていて、大量のデータや頻繁なアクセスでコストが上昇する傾向にあるらしいです。
エッジサーバー上での処理が必要なため、Cache Reserveよりやや遅い可能性があります。
人気のあるコンテンツは長く保持されアクセスの少ないコンテンツは早く削除されます。
つまり、世界規模でみて人気のないページから順にエッジキャッシュから削除される仕組みなので、アクセスの少ないページはキャッシュヒット率が低くなります。
Cloudflareの各種設定を適切に設定してある当サイトの場合、いわゆるCloudflareのキャッシュ = エッジキャッシュ、となっています。
※普通はそうではありません。
エッジキャッシュと違って、指定したコンテンツを長期間R2オブジェクトストレージ上に保持できます。
つまり、アクセスの少ないページでもユーザーがキャッシュするコンテンツと期間を指定して長期間保存できるので、キャッシュヒット率を高く維持できます。
有料サービス(データ量に応じた料金体系)となっていて、比較的高価です。
Cache Reserveはエッジサーバーとオリジンサーバーの間に位置し、エッジキャッシュを補完する役割を果たしていて、階層型キャッシュの最上位層として機能します。
また、Cache Reserve:はR2オブジェクトストレージ上に保存されますが、エッジサーバーと連携して動作します。
.....φ(・∀・*)なるほどぉ
階層型キャッシュの最上位層にあり、かつ、エッジサーバーと連携してしるので、サービスワーカー・ブラウザキャッシュ以外ではCache Reserveがたぶん最速(ry・・・かどうかはわかりませんがベターです。Cloudflareの有料プランにするのも1つの手です。
■本来のキャッシュクリア■
W3 Total Cacheのキャッシュ:手動でクリア
Cloudflareのエッジキャッシュ:手動でクリア
サービスワーカーのキャッシュ:手動でクリア
Cloudflare Workerのキャッシュ:Cloudflareのエッジキャッシュクリアに連動してクリア
Workers KVのキャッシュ:どのキャッシュクリア操作とも連動せず、クリアされない
■本来のWorkers KVのキャッシュ■
Workers KVは独立したストレージシステムであり、他のキャッシュシステムとは別に管理されています。
そのため、本来は他のキャッシュをクリアしてもWorkers KVのデータは自動的にはクリアされません。
■当サイトのWorkers KVのキャッシュ■
当サイトの場合、W3 Total CacheのキャッシュがクリアされるとWorkers KVのキャッシュバージョンが更新されるように設定したので、Workers KVの新しいキャッシュが生成され、Workers KVの古いキャッシュは使われなくなり有効期限後に破棄されます。
Cloudflareを一時的に無効にする & すべてパージ※必要ないかも
↓
Autoptimizeの設定画面にて、Autoptimizeのキャッシュをクリア■注意■adminバー上でAutoptimizeのキャッシュクリアは絶対しない、バクがある
↓
adminバー上でパフォーマンス → Purge All Caches
↓
adminバー上でSW制御 → サービスワーカー全削除
↓
Cloudflareを有効にする※必要ないかも
↓
開発ツール・デベロッパーツールにてサイトを表示してみて、Autoptimize等のエラーが出てないか確認する>
以上、あくまで当サイトの場合です。
■最終追記■
現在は、
ので、adminバーにある、
パフォーマンス → Purge All Cachesにて、W3 Total Cacheのキャッシュをクリア
↓
『SW制御』のサブメニュー『サービスワーカー全削除』にて、サービスワーカーのキャッシュクリア
だけでOKなので超楽ちんな上、10年以上解決されてないAutoptimizeのバグも関係ないです。
USE_WORKERS_KVに関して
■有効・無効■
trueの場合:Workers KVとCloudflare Workerの両方が使われる。
falseの場合:Workers KVは無効、Cloudflare Workerのみが使われる。
■挙動■
WordPressの管理バーにある
ボタンのいずれかをクリックした時に、Workers KVのキャッシュ更新(キャッシュバージョンの更新)が行われる
■Workers KVだけを無効にする場合■
Cloudflareの設定にて、該当サイト → Workers ルート →Workersを管理する → 該当のWorker名を選択して、
『変数とシークレット』セクションにて、USE_WORKERS_KV:false に変更
■注意その1■
Cloudflareの設定にて、該当サイト → Workers ルート →編集にて、
Wordkerを『なし』に変更してしまうと、
ので、Wordkerの設定全体はそのままにしておき、USE_WORKERS_KV:false だけでWordkerを無効化するのがベター。
■注意その2■
Workers KVが有効な場合、リクエストヘッダーに X-Worker-KV-Cache が追加されるようにしてある。
※今Workers KVが有効なのか、簡単に判断するため
■追記■
Workers KVまで導入すれば常に表示速度が安定しTTFBもより速くなるはずですが当サイトの場合イマイチでしたので、 Workers KV・Cloudflare Workerともに全削除しました。
※手順は全てメモしてあるので、再設定・再構築は可能です。
サービスワーカーは導入したままです。
1時間:3600
1日:86400
1週間:604800
1ヶ月:2592000
1年:31536000