2009-08-29 6 views
20

私はちょうどここにディーン・エドワーズはJavaScriptパッカーが見つかりました: http://dean.edwards.name/packer/Base62でjavascriptファイルをエンコードするのは悪いですか?

それは私が最新のを取っ

  1. Base62エンコード
  2. はそれをテストするには、変数

シュリ​​ンク、オプションのカップルを持っています既に56kbに縮小されたjqueryのバージョンを縮小変数で上記のページで実行した場合、結果は同じサイズのファイル56kbになります。

次に、Base62エンコードとシュリンク変数の両方を選択して元のファイルを再度実行したところ、結果は42kbファイルでした。

今では、ファイルサイズを小さくするために、他のサイズを小さくして梱包することについてはよく分かりません。しかし、Base62がエンコードしているものは好奇心ですが、それを使うのは悪いですか?私はそれがファイルをはるかに小さくするが、ページ上でそれをデコードするために後で多くの仕事/負荷を作成するのか?

答えて

34

ベース62はpositional notation以外の何ものでもありません。つまり、とても短いテキストで非常に長い通常のテキストを表現することができます。

Base62を使用すると、jsをクライアントで使用する前に追加のステップが追加されます。 jQueryの種類のライブラリでは、多くの要素に応じて、このステップはクライアントで余分な100ms〜500msの時間がかかることがあります。

ここで、スクリプトのダウンロード時間を比較して、スクリプトの実行に余分な時間を割くことができます。ダウンロード時間を50ms短縮することができますが、処理には100msを要します。減少を返す!

+0

良い点、ありがとう、多分私はそれから離れているべきです – JasonDavis

+0

私はまた、これはサーバーがgzipレスポンスをしていない場合には良い代用品であると付け加えたいと思います。余分な作業のためにライブラリだけでなく、一意のアプリケーションファイルをターゲットにします。 –

16

クライアント上でより多くの作業を作成します。クライアントはコード化されたスクリプトを解読するためにコードを実行しなければなりません。これは、エンコーディングブロックにちょっとしたコードを入力すれば、はっきりと分かります。例えば

は:

var a = 10; 

エンコードとして:

eval(function(p,a,c,k,e,r){e=String;if(!''.replace(/^/,String)){while(c--)r[c]=k[c]||c;k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('0 1=2;',3,3,'var|a|10'.split('|'),0,{})) 
関連する問題