HTMLの圧縮 — マークアップファイルサイズの削減

HTMLの圧縮が空白、コメント、オプションタグ、冗長な属性を除去してマークアップサイズを削減する仕組みを解説。安全な最適化テクニックと一般的な落とし穴を含みます。

HTML

詳細な説明

HTMLの圧縮の仕組み

HTMLの圧縮は、ブラウザのHTMLパーサーが必要としない文字を除去してHTMLドキュメントのサイズを削減します。JavaScriptやCSSとは異なり、HTMLの圧縮は空白が視覚的に重要な場合があるため、より注意深く行う必要があります。

除去されるもの

<!-- 圧縮前 -->
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <!-- ページタイトル -->
  <title>My Page</title>
  <link rel="stylesheet" href="style.css" type="text/css">
</head>
<body>
  <div class="container">
    <h1>Hello World</h1>
    <p>Welcome to   my   website.</p>
  </div>
</body>
</html>

圧縮後:

<!doctype html><html lang=en><head><meta charset=UTF-8><title>My Page</title><link rel=stylesheet href=style.css></head><body><div class=container><h1>Hello World</h1><p>Welcome to my website.</div>

主な最適化

  1. 空白の統合 — タグ間の複数のスペースと改行が1つのスペースに統合(またはブロック要素間では完全に除去)されます。
  2. コメントの除去 — HTMLコメント(<!-- -->)が削除されます。IE用の条件付きコメントはオプションで保持可能です。
  3. 属性引用符の除去 — 値にスペースや特殊文字が含まれない場合、属性値の引用符を省略できます(class="container"class=containerに)。
  4. オプションタグの除去 — HTML5では一部の閉じタグ(</p></li></td>)や開きタグ(<html><head><body>)の省略が許可されています。
  5. 冗長な属性の除去<link>type="text/css"<script>type="text/javascript"はデフォルト値なので除去できます。
  6. ブール属性の短縮checked="checked"が単にcheckedになります。

HTMLの圧縮ツール

  • html-minifier-terser — Node.js用の最も人気のあるHTML圧縮ツール。
  • HTMLMinifier — 元のライブラリ。広く使用されています。
  • minify-html — Rustで記述され、非常に高速。

空白の感度

<pre><code><textarea>、およびwhite-space: preが設定された要素の内部では、空白を保持する必要があります。優れた圧縮ツールはこれらのコンテキストを検出し、その中での空白統合をスキップします。

ユースケース

HTMLの圧縮は、サーバーレンダリングされたページや静的サイトにおいて、HTMLドキュメント自体がクリティカルリソースである場合に重要です。HTMLサイズの削減はTime to First Byteを短縮し、特にランディングページやコンテンツサイトのようなドキュメントの多いページで初期DOMパーシングを高速化します。

試してみる — Code Minifier

フルツールを開く