Javascriptやcssはいつ圧縮するか
ネットワーク負荷を抑えるためにapacheでmod_deflateを使う他に圧縮ツールでJavascriptやcssのファイルを圧縮したりしています。
圧縮するツールは、最近だとYUI Compressor辺りがメジャーですが、色々な種類があり、紹介記事などもよく見かけるのですが、現場ではどのタイミングで圧縮をかけたファイルと元々のファイルを入れ替えているのでしょうか?デプロイするたびにHTMLに記述されているscriptタグの記述を変更するのは面倒なので、変更なしに圧縮版と通常版を入れ替えたいところです。
最近の圧縮ツールでは、オンラインとコマンドラインで圧縮出来る場合が多いです。
最近googleから公開されたGoogle Closure Compilerもオンラインとコマンドラインで圧縮することが出来ます。気になっていたのでこないだUTF8のJavascriptファイルをbatファイルからコマンドで叩いて試してみたところ、日本語が文字化けしてしまいうまく使うことが出来ませんでした。YUI Compressorでは、エンコードの指定が出来るのですが、Closure Compilerだとまだ出来ないのかな?という感じです。
でオンラインとコマンドラインのどちらを使うかですが、オンラインで圧縮するのはとりあえず試してみるという感じのときには便利ですが、基本的にはコマンドラインを使うのが便利だと思っています。この辺は開発言語とかによる部分もあるのかもしれないですが。
私の場合は、Javaのプロジェクトなので、EARファイルを作成してAPサーバにデプロイするというスタイルです。
EARファイルを作成する前に元々ある開発用のJavascriptやcssファイルをxx.js.bakなどにリネームして退避させて、そのファイルを使用して、元々あった開発用のファイルと同じ名前の圧縮済みファイルを作るbatファイルを作成すれば簡単に入れ替えることが出来ます。batファイル自体は、10行、20行位で簡単に作れると思います。
さらにantやmavenでbatファイルを実行して、さらにEARまで作成してしまえば、圧縮し忘れることなく行うことが出来ます。
クライアントでキャッシュされているJavascriptやcssでもWebサーバにアクセスしてしまうので、1つのファイルにまとめてしまうのがよいのですが、1つのファイルにまとめてしまうとscriptタグの記述を変更する必要があったりして、それはそれで不便です。またエラーが発生した場合などに解析が大変になるので、そこまでやるかどうかは、プロジェクトの判断によるところです。アクセスする回数を減らすためにapacheのmod_expiresを使うとよいと思います。
うまくまとまっていないですが、
Q. Javascriptやcssはいつ圧縮するか?
A. デプロイする前にJavascriptとcssを圧縮するbatファイルを実行して切り替えればいいよ
という感じで終わらせていただきます。