転送時のファイルサイズを小さくする

前回の続きです。以降、「転送時のファイルサイズを小さくする」について書きます。

実現方針

apathce のフィルタを使ってクライアントへ送られる前にコンテンツを圧縮します。実は以前、htmlファイルを対象に圧縮する設定をしましたが、その発展系として、CSSJavaScriptも圧縮対象とします。

設定

mod_filterモジュールを有効化
# a2enmod
Which module would you like to enable?
Your choices are: actions alias asis auth_basic auth_digest authn_alias authn_anon authn_dbd authn_dbm authn_default authn_file authnz_ldap authz_dbm authz_default authz_groupfile authz_host authz_owner authz_user autoindex cache cern_meta cgi cgid charset_lite dav dav_fs dav_lock dav_svn dbd deflate dir disk_cache dump_io env expires ext_filter file_cache filter headers ident imagemap include info ldap log_forensic mem_cache mime mime_magic negotiation php5 proxy proxy_ajp proxy_balancer proxy_connect proxy_ftp proxy_http rewrite setenvif speling ssl status substitute suexec unique_id userdir usertrack version vhost_alias
Module name? filter
Module filter installed; run /etc/init.d/apache2 force-reload to enable.
apacheを再起動
# /etc/init.d/apache2 restart
 * Restarting web server apache2
[ OK ]
mod_filterモジュールが有効であることを確認
# /usr/sbin/apache2ctl -M
Loaded Modules:
(snip)
 filter_module (shared)
(snip)
Syntax OK
設定ファイルの編集(いじったら、apacheの再起動を忘れないこと)
vi /etc/apache2/mods-available/deflate.conf
      1 <Location />
      2 # Netscape 4.x has some problems...
      3 BrowserMatch ^Mozilla/4 gzip-only-text/html
      4 
      5 # Netscape 4.06-4.08 have some more problems
      6 BrowserMatch ^Mozilla/4\.0[678] no-gzip
      7 
      8 # MSIE masquerades as Netscape, but it is fine
      9 BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
     10 
     11 # ここからフィルター設定
     12 FilterDeclare Compression CONTENT_SET
     13 FilterProvider Compression DEFLATE Content-Type $text/plain
     14 FilterProvider Compression DEFLATE Content-Type $text/css
     15 FilterProvider Compression DEFLATE Content-Type $application/xhtml
     16 FilterProvider Compression DEFLATE Content-Type $application/xml
     17 FilterProvider Compression DEFLATE Content-Type $application/xhtml+xml
     18 FilterProvider Compression DEFLATE Content-Type $application/rss+xml
     19 FilterProvider Compression DEFLATE Content-Type $application/atom+xml
     20 FilterProvider Compression DEFLATE Content-Type $application/x-javascript
     21 FilterProvider Compression DEFLATE Content-Type $image/svg+xml
     22 FilterChain Compression
     23 # ここまでフィルター設定
     24 
     25 # Don't append Vary heder for specific files
     26 SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png|zip|lzh|exe)$ dont-vary
     27 
     28 # Make sure proxies don't deliver the wrong content
     29 # Header append Vary User-Agent env=!dont-vary
     30 # Header append Vary Accept-Encoding env=!dont-vary
     31 </Location>

確認

設定前後で転送時のファイルサイズを比較すると、以下のとおり。

状態 HTML CSS JavaScript
before(byte) 838 1,335 1,170
after(byte) 458 474 546


効果測定