さくらインターネットでhtmlのGzip圧縮が効かないときの対策

当サイトの記事には広告が含まれます

 さくらインターネットのレンタルサーバーでブログを公開しているのですが、ある日、サーチコンソールの「エクスペリエンス→ウェブに関する主な指標」で、モバイルのページが「改善が必要」になってしまいました。レポートを開いてみると、「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を更新する際は事前にファイルのバックアップを取得しておいてください。

.htaccess(gzip圧縮系)の設定方法
.htaccessファイルによるgzip圧縮は画像以外の構成ファイルを圧縮する事でWEBサイトの表示速度をアップさせる手法です。表示速度が劇的に上がる場合があり、表示速度が向上すればSEO対策も有利に働きます。mod_deflateが使える...

問題が出た時期にはWAFをONにしていた

 また、急に1週間前から「改善が必要」の警告が出始めたことも気になります。この時期に何をやったのか思い出してみると、セキュリティを強化するために、さくらインターネットのウェブ・アプリケーション・ファイアウオール(WAF)をONにしました。さくらインターネットではコントロールパネルで推奨設定を満たしているかどうかが判るようになっているのですが、WAFをOFFにしていると、下記のような警告メッセージが出ます。

さくらインターネット WAF利用推奨のメッセージ

 さくらインターネットでは、WAFとしては、「SiteGuard」という製品が使われています。調べてみると、この製品ではWAFを有効にすると、一部のHTTPヘッダが削除される仕様になっています。その削除されるヘッダの一つとして、GZIP圧縮関連(mod_deflate)系のHTTPヘッダも削除される対象となっていると解説されているサイトがありました。

さくらのレンタルサーバにてGZIP圧縮が出来ないときの対処法 - Qiita
さくらのレンタルサーバにてmod_deflateを用いたGZIP圧縮が出来ないときの対処法です。※ これは2016-09-28に個人ブログで公開した記事を移植し、CC0-1.0で提供しています。情…

 対策としては、CDNをONにして、CDN側でGzip圧縮をONにするのが良いとのことです。ただし、さくらインターネットのウェブアクセラレーター、および、コンテンツブーストに関しては、オリジンサーバー(コンテンツ配信元となるサーバー)の機能に依存するので、CDN単体としてはGzip圧縮する機能はありません。

 今回問題が発生したブログでは、CDNの利用は考えていないので、この対策をとるわけにもいかず、レンタルサーバー側のWAFの機能(SiteGuard)はオフにして、セキュリティプラグインに内包されているWAFの機能で悪意あるアクセスからサイトをガードすることにしました。

 できれば、SiteGuardの方でHTML圧縮の情報は残しておいてほしいのですが、安全対策のトレードオフの中では難しいのでしょうか。

flying scriptsプラグインの導入

 更にページスピードインサイトの警告対策として、flying scriptsプラグインをWordPressに導入しておきました。scriptsの実行タイミングを遅らせてくれます。場合によっては、表示が崩れてしまう場合があるようですが、今回はサイトをテスト表示をしても崩れることは無く、さらにページスピードインサイトのパフォーマンススコアも大きく伸びて90点台になりました。

コメント