RunToolz iconRunToolz
Welcome to RunToolz!
SVG優化效能

你的 SVG 比需要的大 10 倍

設計工具匯出的 SVG 檔案往往比實際需要大 10 倍。了解 SVG 膨脹的原因,學習清理冗餘程式碼、優化路徑資料和減小檔案體積的實用技巧。

RunToolz Team2025年12月15日4 min read

從 Illustrator 匯出一個圖示。檢查檔案大小。在文字編輯器中打開它。

你會發現:沒人需要的元資料、精確到 15 位小數的小數點、空群組、編輯器特定的垃圾,以及 2019 年的註解。一個簡單的 Logo 重達 50KB,而它可以是 3KB。

SVG 只是 XML。每個不必要的字符都是你的使用者下載的位元組。

設計工具添加了什麼

Illustrator、Figma、Sketch——它們都嵌入額外的資料:

<!-- Generator: Adobe Illustrator 24.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
     id="Layer_1" x="0px" y="0px" viewBox="0 0 100 100"
     style="enable-background:new 0 0 100 100;" xml:space="preserve">

這些對於渲染都不是必需的。這是設計工具正確重新打開檔案的元資料。

想親自試試嗎?優化 SVG

精確度問題

設計工具使用高精度座標:

<path d="M12.374892749237,45.293847293847 L67.293847293847,89.374892749237"/>

瀏覽器無論如何都會四捨五入到大約 1-2 位小數。所有這些數字都是浪費的位元組。

更好:

<path d="M12.37,45.29 L67.29,89.37"/>

相同的視覺結果,大小的一小部分。

空群組和 ID

匯出通常創建這樣的結構:

<g id="Layer_1">
  <g id="icon">
    <g>
      <path d="..."/>
    </g>
  </g>
</g>

三個巢狀群組來容納一個路徑。每個群組都增加位元組。除非它們在做某事(如應用變換或樣式),否則移除它們。

ID 類似。每個元素上的 id="XMLID_847_" 累積起來。保留你在 CSS 或 JavaScript 中引用的 ID。移除其餘的。

要優化什麼

移除元資料。 註解、編輯器資訊、你不使用的命名空間。

減少精度。 2-3 位小數通常足夠。

展平群組。 不必要的巢狀沒有目的。

清理 ID。 保留引用的,移除自動生成的垃圾。

合併路徑。 可以是一個路徑的多個路徑應該組合。

移除隱藏元素。 你在設計工具中隱藏但沒有刪除的圖層。

何時保持檔案大小

有時更大是正確的:

動畫。 ID 和群組通常作為動畫目標。不要盲目移除它們。

CSS 樣式。 如果你用外部 CSS 樣式化 SVG,你需要那些 ID 和類別。

未來編輯。 超級優化的 SVG 難以編輯。保留原始檔案,優化生產版本。

比較

簡單圖示,優化前:

原始:24KB
移除元資料後:8KB
減少精度後:4KB
清理結構後:2KB

這是 12 倍小。載入更快。解析更快。每次頁面載入,每個使用者。

內聯 vs 外部

小型 SVG(優化後 1KB 以下)通常最適合直接內聯在 HTML 中。沒有額外的 HTTP 請求。

較大的 SVG 或重複使用的圖示更適合作為可以快取的外部檔案。

平衡點取決於你的情況。一般來說:如果你使用 SVG 一次且它很小,內聯它。如果你重複使用它或它很複雜,外部檔案。


SVG 優化是免費的效能。在發布前通過優化器運行你的圖示。花幾秒鐘,在每次頁面載入時永遠節省位元組。