『gzip』とはファイルを圧縮する方法の1つですが、これを使うことによってウェブブラウザとサーバ間で通信するデータサイズがコンパクトになるためウェブページの表示を高速化することに役立ったりします。
皆さん、こんにちは。
業務改善を行う業務コンサルタント、高橋です。
ウェブサイトを構築する上で、時には表示の高速化を図るためにファイルを圧縮したり、Apacheのモジュールを使ってサーバからブラウザに転送されるデータをコンパクトにしたりすることがあります。
しかしこれが、ケースによっては思わぬものをもたらす場合があったりもします。
.htaccessなどへの記述
gzip圧縮をさせるためには.htaccessなどに対して『mod_deflate』というモジュールを使った記述をします。
細かい説明は省きますがこのような感じです。
↓
<IfModule mod_deflate.c>
SetOutputFilter DEFLATE
BrowserMatch ^Mozilla/4\.0[678] no-gzip
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch \bMSI[E] !no-gzip !gzip-only-text/html
SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png|ico)$ no-gzip dont-vary
SetEnvIfNoCase Request_URI _\.utxt$ no-gzip
Header append Vary Accept-Encoding env=!dont-vary
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE text/javascirpt
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/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
</IfModule>
↑
ファイルを圧縮するとは
前述のこととは別にファイルそのものを圧縮するというのは、htmlファイルなどにおいて改行する度にできるムダな空白を削除してしまい、1Lineにしてしまうといったことです。
これはツールを使えば一瞬でできてしまいます。
例えば、通常は
<html>
<head>
</head>
<body>
<div>
</div>
</body>
</html>
と順番に改行しながら記述しますが、これが
<html><head></head><body><div></div></body></html>
といったような感じになり、ファイル容量的には小さくなります。
gzip圧縮と圧縮ファイルでの問題
このgzip圧縮とファイルの圧縮の両方を行った場合でも通常は問題は起きないはずですが、ファイルの圧縮を行ったツール、もしくはホスティングサービスなどの仕様などによっては文字化けしてしまうケースがあります。
その場合、
1.ファイルの圧縮を別のツールで行ってみる
2..htaccessなどに記述したgzip圧縮の設定を無効にする
3.htmlファイルなどを圧縮ファイルから非圧縮ファイルの状態に戻す
このような対処になります。
圧縮されたファイルと非圧縮のファイル、それぞれをgzip圧縮した場合のサイズは若干圧縮されたファイルの方が小さくなりますが、ページスピードポイントとしてはおそらく同じです。
従って、gzip圧縮、もしくはファイルの圧縮のどちらかを行っていれば圧縮的には十分と言えますので、無理に両方行う必要はないでしょう。