スポンサーリンク

.htaccessでgzip圧縮させてサイトの表示速度を速くしたい

Apache
Giant Panda is resting on a platform made of trees in Chengdu,China.

PageSpeed Insightsとかで推奨されてるgzipを.htaccessで設定するやり方です

gzipとは?

gzip(ジー・ジップ)は、データ圧縮プログラムのひとつ、およびその圧縮データのフォーマットである。「GNU zip」の略であり[1]GNUプロジェクトによって開発・メンテナンスされている。ほぼ全てのUNIXに標準搭載されていたcompressはLZWを使用しているため特許侵害の危険があるので、安全・安心な代替としてGNUプロジェクトが初期に開発にとりかかったもののひとつである(当時のGNU bullitinではyabbaが紹介されていたがそれを差し置いてリリースされたのがgzipである)。

Wikipedia

要するにUNIXで使用してる圧縮形式で、これをサーバとブラウザ間の通信に使用して通信速度を速くしようということです
主にHTML、CSS、JS、XML、フォントファイルを圧縮して高速化を図ります
画像は既に圧縮されている状態なのでgzipで圧縮する意味がほとんどありませんし、サーバの負荷になるので今回は除外します
通信の仕組みに関してはこちらのサイトが分かりやすく説明されてます

.htaccessでサーバにgzip圧縮させる

サーバの設定

サーバ側で処理させるには条件があります、ApacheまたはNginx等で「mod_deflate」が有効になっており、かつ.htaccessファイルでの設定が許可されている必要があります
AWSのEC2インスタンス等webサーバを自分で用意している場合は設定が必要ですが、レンタルサーバの場合はホスティングサービス側ですでに設定されている場合もあります
各レンタルサーバの仕様をご確認下さい

.htaccessファイルの記述方法

.htaccessファイルに下記を記述します、.htaccessファイルは記述ミスすると500エラーが出てサイトが見られなくなったりするのでバックアップは必ず作りましょう

<IfModule mod_deflate.c>
SetOutputFilter DEFLATE
 
#古いブラウザ対策
BrowserMatch ^Mozilla/4\.0[678] no-gzip
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch \bMSIE\s(7|8) !no-gzip !gzip-only-text/html
 
#画像は圧縮しない GIF、JPEG、PNG、ICO
SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png|ico)$ no-gzip dont-vary

#圧縮するファイル
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE text/js
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/atom_xml
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/x-javascript
AddOutputFilterByType DEFLATE application/x-httpd-php
AddOutputFilterByType DEFLATE application/x-font-ttf
AddOutputFilterByType DEFLATE application/x-font-woff
AddOutputFilterByType DEFLATE application/x-font-opentype
</IfModule>

「<IfModule mod_deflate.c></IfModule>」で「mod_deflate」が使用できるかを判定し、使用できる場合は内部の設定を適用させます
古いMozillaのブラウザやIE8以前のバージョンは圧縮しない、あるいはhtmlのみに圧縮を適用させてます

gzip圧縮されているか確認する

.htaccessファイルに記述を追加したら、gzip圧縮が適用されているか確認します
SYNCER様の「Gzipチェッカー」にURLを入力すると確認できます

https://lab.syncer.jp/Tool/Gzip-Checker/

まとめ

gzip圧縮はサイト表示高速化にかなり効果を発揮します、圧縮率を計測された方がいるのでそちらもご紹介します

gzipの各圧縮レベルでの圧縮率と処理時間の計測

おおよそ7〜8割程度圧縮することが出来る模様です
wordpressのキャッシュプラグイン等にも同じ機能を持っているものも多いのですが、「プラグイン使いたくない」とか「gzip圧縮だけしたい」とかの場合は.htaccessファイルで設定するのが良いと思います

参考サイト

.htaccessファイルでgzip圧縮させてサイト表示速度を向上させる方法
gzipの各圧縮レベルでの圧縮率と処理時間の計測
gzip圧縮のしくみ

コメント

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