Javascriptライブラリをgzip圧縮する


うちのサイトを構成してるファイル群を見ると、一番大きなファイルは画像ファイルではなく、prototype.jsだった。なんと123.17KBもあるのだ。Webalizerの統計によると、サイト全体の転送量の10%を占める。
100220-0001.png

こぶたのラッパ : 世界の片隅で.jgzと言ってみる
http://smil.exblog.jp/4650470/

早速、生のprototype.jsとgzip圧縮したprototype.jgzを用意した。prototype.jsのバージョンは1.6.0.2だ。

$ cp prototype.js prototype.tmp
$ gzip prototype.tmp
$ mv prototype.tmp.gz prototype.jgz
$ ll prototype.*
-rw-r--r--@ 1 delphinus  staff   29166  2 19 12:29 prototype.jgz
-rw-r--r--@ 1 delphinus  staff  126132  3 10  2008 prototype.js

100KB近く削減できた。後は上のリンクにある通り、Apacheの設定ファイルに以下の記述を追加1

NameVirtualHost *:80
RewriteEngine on
RewriteCond %{HTTP_USER_AGENT} ".*Safari.*" [OR]
RewriteCond %{HTTP:Accept-Encoding} !gzip
RewriteRule (.*)\.jgz$ $1\.js [L]

AddType "text/javascript;charset=UTF-8" .jgz
AddEncoding gzip .jgz

Apacheを再起動すると、確かにprototype.jgzの方が読み込まれている。
100220-0002.png

prototype.jsの次はmt.jseffects.jsが気になってきた。でもこれ以上はきりがないかな。


  1. リンクに書かれている、「Safariがgzip圧縮したJavascriptファイルを読み込めない問題」はうちの環境では確認できなかった。その対策である、コードの3〜5行目を除いた状態でも、問題なく閲覧ができたのだ。昔のバージョンのみで起こる問題だったのだろうか? 

コメントを残す