さくらインターネットのレンタルサーバーでブログを公開しているのですが、ある日、サーチコンソールの「エクスペリエンス→ウェブに関する主な指標」で、モバイルのページが「改善が必要」になってしまいました。レポートを開いてみると、「LCP の問題: 2.5秒 超(モバイル)」で警告が出ています。
HTMLが圧縮されていないのはなぜか?
警告が出ているURLをページスピードインサイト(PageSpeed Insights)でチェックしてみました。すると、LCP(Lrgest Contentful Paint)を大きく悪化させている一つの要因として、HTMLが圧縮されていないことが挙げられていました。
しかし、「.htaccess」で間違えなく、「AddOutputFilterByType DEFLATE text/html #HTMLファイル」など、圧縮で効果が出るファイル種別ごとに指定が間違えなくなされています。この構文が入っていれば、本来であればHTMLがGzip圧縮されてサーバーからクライアントに渡されるはずです。この設定は、Wordpressのテーマ「Cocoon」の高速化設定をONにしたことで、.htaccessが自動で更新されていました。
もし、手動で.htaccessに書き込む場合は、こちらのサイトが参考になります。.htaccessを更新する際は事前にファイルのバックアップを取得しておいてください。
問題が出た時期にはWAFをONにしていた
また、急に1週間前から「改善が必要」の警告が出始めたことも気になります。この時期に何をやったのか思い出してみると、セキュリティを強化するために、さくらインターネットのウェブ・アプリケーション・ファイアウオール(WAF)をONにしました。さくらインターネットではコントロールパネルで推奨設定を満たしているかどうかが判るようになっているのですが、WAFをOFFにしていると、下記のような警告メッセージが出ます。
さくらインターネットでは、WAFとしては、「SiteGuard」という製品が使われています。調べてみると、この製品ではWAFを有効にすると、一部のHTTPヘッダが削除される仕様になっています。その削除されるヘッダの一つとして、GZIP圧縮関連(mod_deflate)系のHTTPヘッダも削除される対象となっていると解説されているサイトがありました。
対策としては、CDNをONにして、CDN側でGzip圧縮をONにするのが良いとのことです。ただし、さくらインターネットのウェブアクセラレーター、および、コンテンツブーストに関しては、オリジンサーバー(コンテンツ配信元となるサーバー)の機能に依存するので、CDN単体としてはGzip圧縮する機能はありません。
今回問題が発生したブログでは、CDNの利用は考えていないので、この対策をとるわけにもいかず、レンタルサーバー側のWAFの機能(SiteGuard)はオフにして、セキュリティプラグインに内包されているWAFの機能で悪意あるアクセスからサイトをガードすることにしました。
できれば、SiteGuardの方でHTML圧縮の情報は残しておいてほしいのですが、安全対策のトレードオフの中では難しいのでしょうか。
flying scriptsプラグインの導入
更にページスピードインサイトの警告対策として、flying scriptsプラグインをWordPressに導入しておきました。scriptsの実行タイミングを遅らせてくれます。場合によっては、表示が崩れてしまう場合があるようですが、今回はサイトをテスト表示をしても崩れることは無く、さらにページスピードインサイトのパフォーマンススコアも大きく伸びて90点台になりました。
コメント