縮小化は Web パフォーマンスの中核となる習慣です。マシンが無視する文字を取り除き、HTML、CSS、JavaScript のダウンロードと解析をより少ないバイト数で実行します。コメントと空白を削除するというアイデアは 3 つすべて同じように思えますが、安全なルール、リスク、利点は大きく異なります。 HTML タグ間のスペースを折りたたむことは低コストで低リスクです。 CSS 内の空白を削除するには、calc() とメディア クエリに注意する必要があります。また、自動セミコロン挿入、文字列、および正規表現により、単純な圧縮では JavaScript が壊れる可能性があります。このガイドでは、HTML、CSS、JavaScript の縮小化を並べて比較します。それぞれが何を削除するか、通常どのくらい節約するか、問題が発生する場所、それらを結び付けるワークフロー、および HTML、CSS、JS、および JSON 用の無料の ToolsMinify 縮小化機能について説明します。
クイック回答
言語ごとに専用のミニファイアーを使用します。 HTML: コメントを削除し、タグ間の空白を折りたたみます (スクリプト、スタイル、プレ、またはテキストエリアには決して触れないでください)。 CSS: 文字列、url()、calc()、およびメディア クエリを保護しながら、コメントを削除し、空白を詰めます。 JavaScript: 小さなスニペットには空白のみが適しています。実稼働アプリ バンドルには、名前変更やデッドコードの削除のために、Terser、esbuild、SWC などのパーサー ベースのツールが必要です。常にツールをフォーマットに一致させてください。ある言語のミニファイアーを別の言語で実行しないでください。
ミニ化とは何ですか?
縮小化は、ソースを同じ動作をする最小の形式に書き換えます。コメント、インデント、空白行、および多くのスペースは、人間が読みやすいように存在します。ブラウザとパーサーはそれらを必要としません。正しく縮小されたファイルは、同じページをレンダリングし、同じスタイルを適用し、同じスクリプトを実行します。読み取り可能なコピーをソース管理に保持し、本番環境に移行する際に縮小します。
縮小化は gzip や Brotli とは異なります。これらは回線上のバイトを圧縮するため、解凍する必要があります。最初に縮小し (テキスト層)、次にサーバーに圧縮させます (トランスポート層) - それらはスタックされます。このサイトのすべての無料ミニファイアーのクラスターの概要については、JSON、HTML、CSS、および JavaScript ミニファイアー ガイド を参照してください。
HTML 縮小の詳細
HTML はクリティカル パス上にあります。ブラウザは、CSS、スクリプト、画像を検出する前に、ドキュメントをダウンロードして解析する必要があります。安全な HTML 縮小化は通常、次のようになります。
- HTML コメントを削除します (多くの場合、まだ必要な場合は IE の条件付きコメントを保持します)。
- タグ間の一連の空白 (インデント、タブ、空白行) を折りたたみます。
- 表示されるテキストの内容を変更せずに、タグの周囲の不要なスペースをトリミングします。
- 要素の構造、属性、レンダリングされたコンテンツは変更されません。
主なリスクは、保護領域内での過度のストリッピングです。 <pre> と <textarea> 内の空白はコンテンツです。 <script> と <style> 内の空白と改行は、HTML ミニファイアーではなく、JS と CSS に属します。 HTML Minifier のような保守的なツールは、これらのブロックをそのままにし、保存されたバイト数を表示します。より詳細なパフォーマンスの観点 (LCP、TTFB、gzip) については、ページ読み込みを高速化するために HTML を縮小する方法 を参照してください。
HTML リスクの概要
コメントとタグ間の空白に限定されている場合はリスクが低い。ミニファイアーがスクリプト、スタイル、プレ、またはテキストエリアのコンテンツを書き換える場合は高リスクです。インライン JS と CSS は、マークアップとして破棄されるのではなく、専用のミニファイアーに渡される必要があります。
CSS 縮小の詳細
CSS はレンダリングをブロックすることがよくあります。ブラウザは、スタイルシートの準備ができるまで最初のペイントを遅らせることがあります。安全な CSS 縮小化は通常次のようになります。
- /* ブロック コメント */ と、中括弧、コロン、セミコロンの周囲の不要な空白を削除します。
- セレクターと宣言を有効に保ちながら、空行とインデントを折りたたみます。
- 引用符で囲まれた文字列と url() パスを保持するため、アセット参照はそのまま残ります。
- calc() 内 (+ と - の周囲) およびメディアクエリのかっこの前に意味のあるスペースを保持します。
CSS の縮小はリスクが中程度です。ほとんどのスタイルシートはきれいに縮小されますが、不注意なツールは calc()、属性セレクター、または @media ルールを壊します。未使用の CSS の削除 (PurgeCSS など) は、空白だけを節約できる別の手順であり、無効なルールを削除した後に残るものを最小化します。デプロイ前に安全なコメントと空白のクリーンアップを行うには、CSS Minifier を使用します。
CSS リスクの概要
中程度のリスク。文字列、url()、calc() の間隔、およびメディアクエリ構文を保護します。縮小化と未使用のセレクターの削除を混同しないでください。これは、誤検知のリスクを伴う別の最適化です。
JavaScript の縮小化の詳細
JavaScript は、縮小化が HTML や CSS と最も異なる部分です。次の 2 つの層があります。
1. 空白/コメントの縮小 (スニペットに対して安全)
基本的な JS ミニファイアーは、文字列リテラル、テンプレート リテラル、および正規表現を保護しながら、// および /* */ コメントを削除し、インデントを折りたたみます。自動セミコロン挿入 (ASI) が引き続き動作するように、ステートメント間の改行を維持する必要があります。これは、小さなインライン スクリプト、要点、電子メールやランディング ページのスニペットに最適です。 ToolsMinify の JavaScript Minifier は、この種のツールです。高速かつプライベートで、意図的に保守的です。
2. パーサーベースの縮小化 (実際のアプリに必要)
運用アプリケーション バンドルには、実際の JavaScript パーサー (Terser、esbuild、SWC、またはバンドラーの組み込み minify) が必要です。これらのツールは AST を理解するため、ローカル変数の名前を安全に変更したり、到達不能なコードを削除したり、定数を折りたたんだりできます。空白のみの縮小が、すでに構造化されたソースの 10 ~ 30% を上回ることはほとんどありません。パーサーベースのツールは、多くの場合、アプリ全体ではるかに多くの作業を削減します。単純な「すべてのスペースを削除」スクリプトは、ASI、正規表現リテラル、およびテンプレート文字列を破壊します。これが、高度な JS 縮小化が正規表現ジョブではない理由です。
JS リスクの概要
下手をすると3つの中で最もリスクが高い。スニペットには空白文字を使用しても安全なツールを使用します。実稼働バンドルのビルドでは Terser、esbuild、または SWC を使用してください。 JS 構文を理解できないツールにアプリ コードを貼り付けないでください。
節約の比較: HTML、CSS、JS
生のサイズの縮小は、ソースのインデントとコメントの量によって異なります。空白/コメントの縮小の一般的な範囲:
- HTML: CMS エクスポート、電子メール テンプレート、および深くインデントされたページでは 15 ~ 40% が多い。すでにコンパクトなマークアップは少なくなります。
- CSS: 多くの場合、コメントと書式設定だけで 10 ~ 30% が発生します。最初に未使用のルールを削除し、次に縮小することで、より大きな勝利が得られます。
- JavaScript (空白のみ): コメント化されたインデントされたスニペットでは 10 ~ 25% が多い。 Terser/esbuild を使用した本番バンドルでは、通常、名前変更とデッドコードの削除により大幅な削減が見られます。
圧縮に注意してください。gzip と Brotli はすでに繰り返しスペースを圧縮しているため、縮小のみによるネットワーク経由のゲインは生のバイト デルタよりも小さくなります。縮小してもメモリ、キャッシュ、ストレージ内の非圧縮サイズが縮小され、コンプレッサーの負担が軽減されます。両方を使用してください。
並べて: 何が違うのか
- HTML ではマークアップ コメントとタグ間の空白が削除されます。 script、style、pre、textarea には触れてはなりません。
- CSS はスタイルシートのコメントを削除し、構文の空白を減らします。文字列、url()、calc()、および @media を保護する必要があります。
- JS はコードのコメントとインデントを削除します。文字列、テンプレート、正規表現を保護し、空白のみのツールでは ASI 安全な改行を保持する必要があります。
- HTML と CSS は通常、オンラインの安全な空白ツールで停止します。 JS アプリには、CI またはバンドラーのパーサー (Terser/esbuild/SWC) が必要です。
- JSON は 4 番目のケースです。JSON Minifier & Formatter を使用してコンパクトに解析および再文字列化することで縮小します。
推奨される縮小ワークフロー
- ソース管理で、読み取り可能でコメントされた HTML、CSS、および JS を作成します。縮小された出力を手動で編集することはありません。
- 独自のツール (またはプラグインを構築) を使用して各形式を縮小します。 CSS で HTML ミニファイアーを実行したり、JS で CSS ミニファイアーを実行したりしないでください。
- HTML ページとテンプレートの場合: HTML Minifier を最後に実行します。これらのブロックが重要な場合は、インライン CSS/JS を個別に縮小してください。
- スタイルシートの場合: 必要に応じて未使用のルールを削除し、デプロイ前に CSS Minifier を実行します。
- アプリケーション JavaScript の場合: esbuild、Vite、webpack、Terser、または SWC で minify を有効にします。ブラウザーの JS Minifier は、小さなスニペットにのみ使用してください。
- サーバーまたは CDN で gzip または Brotli を有効にして、縮小されたアセットがネットワーク上で圧縮されるようにします。
- 各ツールのバイト節約された読み出しをチェックして、ファイルがパイプラインに接続する価値があるかどうかを確認します。
経験則
人間向けにフォーマットし、マシン向けに minify します。言語ごとに 1 つのツール。 HTML/CSS/スニペットの空白縮小子。実稼働JavaScriptバンドル用のパーサーベースのminify。
ToolsMinify の無料ミニファイアー
以下のすべてのツールはブラウザ内で完全に実行されます - 無料、サインアップなし、何もアップロードされません。
- HTML ミニファイアー - コメントを削除し、タグ間の空白を折りたたむ。スクリプト、スタイル、プレ、テキストエリアを保持します。
- CSSミニファイアー - コメントを削除し、空白を詰めます。文字列、url()、calc()、メディアクエリを保護します。
- JavaScript ミニファイアー - スニペット用に安全な空白を縮小化します。文字列、テンプレート、正規表現を ASI 安全な改行で保持します。
- JSON ミニファイアーとフォーマッタ - JSON を 1 行に縮小するか、2 スペースのインデントで美しくします。そのまま検証します。
よくある質問
HTML、CSS、JS の縮小化は同じものですか?
同じ目標 - より小さいファイル - 異なるルール。各言語には、オプションに見えてオプションではない文字があります。形式ごとに専用のミニファイアーを使用して、空白文字やコメントを安全に削除してもマークアップ、スタイル、スクリプトが壊れないようにします。
1 つのツールで HTML、CSS、JavaScript をまとめて縮小できますか?
別のツールを使用することをお勧めします。 HTML ミニファイアーでは、インライン スクリプトとスタイルをそのままにしておく必要があります。これらのブロックには CSS と JS ミニファイアーが必要です。形式を分離しておくことで、出力を安全に保つことができます。
ブラウザーの JavaScript ミニファイアーは本番環境には十分ですか?
小さなインライン スクリプトの場合は可能です。実際のアプリケーション バンドルの場合は、いいえ、Terser、esbuild、SWC、またはバンドラーの minify オプションを使用して、変数の名前を変更し、デッド コードを削除できるようにします。ホワイトスペースのみのツールは、CI の JS パーサーの代わりにはなりません。
どの形式が縮小を最も節約できるでしょうか?
それはソースがどれだけ肥大化したかによって異なります。多くの場合、十分にインデントされた HTML とコメントされた CSS が高い割合で勝利します。大規模な JS アプリでは、空白だけからではなく、パーサーベースのミニファイアーが実行された場合にのみ、最大の絶対的な勝利が得られます。
gzip または Brotli はまだ必要ですか?
はい。テキストを縮小してから、ワイヤー上で圧縮します。これらはさまざまなレイヤーで機能し、うまく積み重ねられます。
どこから始めればよいでしょうか?
次に出荷するフォーマットから始めます。ページを HTML Minifier に、スタイルシートを CSS Minifier に、またはスニペットを JavaScript Minifier に貼り付けます。 API ペイロードの場合は、JSON Minifier & Formatter を使用します。
比較と縮小 - 無料
無料の HTML Minifier を開いてマークアップを縮小し、それを CSS Minifier および JavaScript Minifier と組み合わせます。それぞれはブラウザーで実行され、サインアップやアップロードは不要で、節約したバイト数が正確に表示されます。