HTML / Javascriptミニファイが有益な理由


13

HTTPプロトコルが既にgzipデータ圧縮をサポートしているのに、なぜHTML / Javascriptミニファイが有益なのですか?

Javascript / HTMLミニフィケーションは、不要な空白を削除し、おそらく変数をそれぞれ数文字に名前変更することにより、Javascript / HTMLファイルのサイズを大幅に削減できる可能性があることを理解していますが、LZWアルゴリズムは、繰り返しが多い場合は特にうまくいきません文字(例:たくさんの空白?)

一部のJavascript縮小ツールは、サイズを縮小するだけではありません。たとえば、Googleのクロージャーコンパイラは、関数をインライン化したり、他の分析を行ったりして、コードのパフォーマンスを改善しようとします。ただし、Javascriptミニファイの主な目的は通常、ファイルサイズを小さくすることです。

また、コードの難読化など、パフォーマンス以外に縮小したい他の理由があることも理解しています。ただし、パフォーマンスの向上とファイルサイズの削減ほど、その理由は通常強調されません。たとえば、Closure Compilerは難読化ツールとしてではなく、コードサイズリデューサーおよびダウンロード速度エンハンサーとして宣伝されています。

それでは、gzip圧縮でファイルサイズをすでに大幅に削減している場合、Javascript / HTMLミニフィケーションから実際にどれだけのパフォーマンスが得られますか?

回答:


10

gzip圧縮には独自のオーバーヘッド(CPU)があるためです。縮小化は、CPUに影響を与えることなく適用できる最初の「低負荷」圧縮です。

これらは取るに足らないように思えるかもしれませんが、規模が関係する場合、数値はすぐに意味をなします。

さらに、縮小化により、gzip を減らすことができます。


3
最新のWebサーバーは、実際にはすべてのリクエストに対してjavascriptファイルをgzipしますか?サーバーは、変更される可能性が低いため、静的なgzip圧縮されたコンテンツをキャッシュする可能性があります。
-aaberg

@aabergそれでも、それはサーバー上のより多くのキャッシュされたデータです。(キャッシングが良くないというわけではありません)
-chills42

@ chilis42:サーバーは、ファイルシステム自体からgzip圧縮されたファイルを提供できます(問題がある場合)。
ハービー

スケールの場合は+1。10人のユーザーがいて、1日に100件のヒットがある場合、その関係はありません。1時間に100,000ヒットをサーバーする必要がある場合、大幅に節約できます。
-SoylentGray

2
Javaで実装されることが多いフルスケールJavaScriptコンパイラーといくつかの最適化実行を内部表現で実行すると、CPUのオーバーヘッドが低くなることはありません
オレグV.ボルコフ

5

一般に、gzipは一般的なアルゴリズムであり、特定の入力に特に適合していないため、ミニフィケーション+ gzipは通常より良い結果をもたらしますが、minificatorはそのコンテンツを認識し、一般的な圧縮アルゴリズムではできない作業を実行できます。一般的に圧縮することはできませんが、損失を伴うこともできます(コメントと空白を完全に排除します-これはこのデータを100%圧縮しますか?)


2

パフォーマンス上のメリットはあまりありませんが、帯域幅の使用量は削減されます。縮小(およびリクエストの数を減らすためのcssスプライトの使用)によってjs(およびcss)ファイルから数KBを削ることができ、1か月後に1千人のユーザーにサービスを提供している場合、1か月後に帯域幅が大幅に削減されます。


1
+1:縮小とは、総計での節約です。個々のリクエストの高速化に役立つ可能性がありますが、その目的は、時間の経過とともに帯域幅の使用量を減らすことです。
ジョエルイーサートン

1

Webアプリケーションで行う最も高価なことの1つは、送信することです。CPUサイクルで料金を支払っている場合、ネットワーク経由で送信するものを少なくすることは、ほとんど常に正味の利益です。

さらに、これを裏付ける科学的なものは何もありませんが、縮小ツールがドメイン固有であり、javascriptをgzipよりも圧縮するように調整できる場合、縮小ツールはおそらくgzipよりもjavascriptを圧縮できると期待していますは汎用ツールであり、途中で妥協します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.