«前の日記(2008年02月06日) 最新 次の日記(2008年02月09日)» 編集

ema log


2008年02月07日 [長年日記]

_ [Programming][JavaScript][Ruby] JavaScript / CSS ファイルをマージして、最小化して、圧縮する Ruby スクリプト

merge_and_compress.rb。以前作ったスクリプトを置いておきます。

要は、ファイルを連結して、YUICompressor を呼び出して、gzip を呼び出しているだけです。

使い方

以下のファイルが必要です

YUICompressor と設定ファイルはスクリプトと同じフォルダに入れてください。gzip はパスの通ったところに置いておくと便利かも。

rascut の様な気の利いた自動コンパイル機能はありません。自動探索じゃなく、設定ファイルが必要なのは、include の順番で差が出るからです。

マージ結果は、自動で最小化対象に、最小化対象は自動で圧縮対象になります。

必要があれば、設定ファイルで文字コードを設定できます。

詳しくはソース参照。

目的

なんで、こんなものを以前作ったかというと「JavaScriptやCSSを動的にdeflate圧縮するのではなく、あらかじめ圧縮しておいたものを配信することでサーバーのCPUリソースを節約する」という記事で紹介されている設定を採用してみたからです。元記事に習って「Capistrano」使えよって感じでしょうかw

この日記のスタイルシートでも使用しています。color_scheme.csslayout.css などを連結しているわけです。最初は @import でやってたのですが、ちょっとは読み込みが早くなるといいなぁと思ったおまじないですね。

例えば、prototype.js は 120KB ありますが、minify して gzip すると 20KB になります。うちのような帯域の細いサーバなら効果があるかもと思いまして。tage のメインのソースコードも 43KB → 7.7KB です。もちろん、JavaScript 自体の高速化の方が効くと思われます。