JavaScript::Packerを用いたJavaScriptの圧縮

JavaScriptのサイズを減少させるためのモジュール
JavaScript::Packerの例。

#!/usr/bin/env perl
use strict;
use warnings;
use autodie;

use JavaScript::Packer;

my $js = shift;
open my $fh, "<", $js;
my $js_code = do {
    local $/;
    <$fh>;
};
close $fh;

my $packer = JavaScript::Packer->init;

print "'original' size = ", length $js_code, "\n";
for my $option (qw/clean shrink obfuscate best/) {
    my $output = $packer->minify(\$js_code, { compress => $option });
    print "'$option' size = ", length $output, "\n";
}

jquery-1.6.1.jsを取得して適用してみた結果は以下のとおり

  % perl js_minify.pl jquery-1.6.1.js
  'original' size = 234995
  'clean' size = 132743
  'shrink' size = 109771
  'obfuscate' size = 72373
  'best' size = 72373

わりと処理時間がかかってるかなって印象だけど、あらかじめ圧縮したものを
置くことが普通だと思うのであんまり支障はなさそうですが、リアルタイムで
サイズ軽減ということがあれば、サイズが大きいとちょっともっさり感がある
かもしれないですね。