SVGスプライトとは? アイコンを1つのファイルにまとめる
SVGスプライトは、多数の個別のSVGアイコンを1つのファイルにまとめるため、ブラウザは1回のリクエストでそれらをダウンロードし、それぞれをidで参照します。
数十個のアイコンを別々のファイルとして読み込むことは、数十回のリクエストを意味します。SVGスプライトはそれらを1つのファイルにまとめ、各アイコンは使われる場所でidによって参照されます。これは、旧来のアイコンフォントやimage spriteの手法に対する、鮮明でスケーラブルなモダンな答えです。個別のソースアイコンからスプライトを生成することは、CIに収まるbuildのステップです。
スプライトの仕組み
各アイコンは、1つのSVGファイル内でidを持つsymbolになります。マークアップでは、小さなuse要素がsymbolをidで参照するため、アイコンごとに個別のリクエストをせずにアイコンが描画されます。
なぜ他の手法より優れているのか
- アイコンごとに1回ではなく、1回のリクエストで済みます。
- ベクターアイコンは、どんなサイズでもどんなディスプレイでも鮮明なままです。
- rasterスプライトと違い、アイコンをCSSでスタイルできます。
スプライトとインラインSVGの比較
各SVGをインライン化するとリクエストは避けられますが、HTMLが肥大化し、何度も使われるアイコンが重複します。スプライトはアイコンを一度だけ集約して参照するため、同じアイコンが繰り返し現れる場合に適しています。
スプライトの生成
buildツールは個別のアイコンファイルを収集し、それぞれを最適化し、安定したidでスプライトに組み立てます。buildで行うことで、スプライトがソースアイコンと自動的に同期し続けます。
CI/CDにおけるSVGスプライト
buildは各アイコンを最適化し、スプライトを生成し、cacheのためにcontent-hashを付けるため、1つのcache可能な静的アセットとして出荷されます。スプライトはソースから生成されるので、アイコンを追加または変更すると、pipelineの実行ごとに決定的に再生成されます。
重要なポイント
- SVGスプライトは、多数のアイコンをidで参照される1つのファイルにまとめます。
- リクエストを削減し、アイコンを鮮明でCSSでスタイル可能に保ちます。
- CIはスプライトを1つのcache可能な静的アセットとして生成しhashを付けます。
関連ガイド
What Is a Static Asset? The Files Your Site ServesA static asset is a file served as-is, like an image, font, or script, with no server processing. Learn how t…
What Is a Favicon Pipeline? Generating Every Icon SizeA favicon pipeline generates the many icon sizes and formats browsers and devices need from one source image.…
What Is a CDN Cache? Serving Assets From the EdgeA CDN cache stores your static assets at edge locations close to users for fast delivery. Learn how it caches…