Nginxはgzip staticで高速化!設定方法・圧縮方法を解説
gzip staticで高速化!
これは絶対にやった方が良いです。
特に面倒でもなく効果は抜群。
Nginxにおけるgzip_ staticを説明します。
1、gzip staticを使わない場合のgzip処理
gzip_staticを使わずただ「gzip on」の場合は毎回圧縮・送信する。
実際にはメモリにキャッシュしているかもしれませんが、
「毎回圧縮処理をするのでCPU負荷が大きい」というのが定説。
そのため、毎回処理するのを止めたい。
というのを実現できるのが「gzip_static」。
2、gzip staticを使った場合のgzip処理
「gz」ファイルを探して使ってくれる!
「style.css」の場合、自動的に「style.css.gz」というファイルを探してくれます。
見つかったらそれを返し、見つからなかったら通常通り「style.css」を圧縮します。
したがって、あらかじめ圧縮ファイルを作っておくとCPU負荷も無く高速な処理となる。
さらに良いのが圧縮レベル。
3、gzip staticを使用するメリット
最高圧縮で保存しておくことができる。
普通は最高圧縮にするとCPUの負荷が大きいので不可能なのですが、
あらかじめゆっくり作ることができるので、基本的に最高圧縮(レベル9)で保存します。
ファイルサイズは確実に下がります。
4、Nginxでgzip staticを使うにはモジュールが必要
「ngx_http_gzip_static_module」が必要です。
下記コマンドでインストールされているか確認ください。
nginx -V 2>&1 | tr ' ' '\n'|egrep _module | sed -e 's/--with-//g'
インストールされていない場合は「Nginxを再インストール」となります(多分)。
「–with-http_gzip_static_module」をつけてインストールしないといけない。
ただし、リポジトリからインストールしている自分は何もせず全部入っていました。
とりあえず確認を。
5、Nginxでのgzip static設定方法
gzip_static on;
gzip on;
gzip_comp_level 1;
gzip_min_length 1024;
gzip_vary on;
gzip_proxied any;
gzip_types text/plain text/css text/javascript application/javascript application/x-javascript application/json application/ld+json text/xml application/xml application/xhtml+xml application/atom+xml application/xml+rss application/rss+xml image/x-icon image/svg+xml image/bmp;
いつもの記載内容に「gzip_static on」を追加するだけ。
これだけで有効になるのでお手軽。
自分はこれだけを設定することをおすすめします。
ググると「gzip_static always」を指定されている方が多いですが、
これは「どんな状況でもgzファイルを使う」という指定。
全ての対象ファイルを圧縮して保存することが前提です(理想ではある)。
これだと未対応のユーザーは表示されないので、合わせて「gunzip on;」も指定する必要がある。
クライアントがgzipに対応していなかった場合はサーバー側で解凍してから送信します。
詳しくは下記ページを見てください。
公式解説:ngx_http_gzip_static_module モジュール
6、gzipで圧縮する方法
<PHPの場合>
gzencode($file, 9)
<ubuntu(Linux)の場合>
gzip -9 -k style.css
自分は更新の度に自動でPHPで作るようにしています。
7、圧縮した方が良いファイル
css、js、xmlなどのテキスト系ファイル全般
「画像以外」と考えても大丈夫です。
基本的には「gzip_types」で指定しているファイルになる。
ただし、画像も「圧縮レベル9」だとサイズが小さくなることが多い。
こだわりたい人はいろいろ圧縮して確認してみてください。
--
以上、Nginxにおけるgzip staticの説明でした。
効果抜群なので是非やってみてください。