Wydajność· 8 min czytania

Plik SVG za duży? 8 wskazówek kompresji i optymalizacji

Czy plik SVG jest za duży? 8 technik optymalizacji: mniej punktów zakotwiczenia, łączenie ścieżek, bez metadanych, mniejsza precyzja, kompresja SVGO, ponowne użycie symboli, mniej warstw, gzip.

SVG o wadze kilkuset KB, a nawet kilku MB, to zwykle efekt zbyt wielu punktów zakotwiczenia, zbędnych ścieżek, metadanych edytora i nadmiernej precyzji dziesiętnej. Poniższe osiem technik uporządkowano od źródła po dostarczenie i wszystkie są w praktyce możliwe do zastosowania.

1. Na poziomie ścieżek: mniej punktów zakotwiczenia, łącz ścieżki

Wskazówka 1: ogranicz punkty zakotwiczenia (uprość ścieżki)

Im więcej punktów zakotwiczenia ma ścieżka, tym większy plik i wolniejsze renderowanie. Zwiększ wygładzanie podczas konwersji, aby ograniczyć je u źródła. W istniejącym SVG posłuż się funkcją Object → Path → Simplify w Illustratorze albo Path → Simplify (Ctrl+L) w Inkscape, aby usunąć zbędne punkty. Regulacja wygładzania i liczby kolorów w narzędziu konwersji PolySVG pozwala na bieżąco ważyć jakość wobec rozmiaru pliku.

Wskazówka 2: łącz ścieżki i warstwy

Połącz wiele ścieżek o tym samym wypełnieniu w jedną, aby usunąć powtarzające się atrybuty, spłaszcz bezsensowne zagnieżdżenie grup oraz usuń ukryte warstwy i puste elementy. W programie do projektowania użyj operacji scaleń ścieżek albo połącz warstwy przed eksportem.

2. Wewnątrz pliku: usuń metadane, obniż precyzję

Wskazówka 3: usuń metadane edytora

Pliki SVG wyeksportowane z Illustratorsa lub Inkscape często zawierają przestrzenie nazw edytora, <metadata>, komentarze i ustawienia eksportu, które nie wpływają na renderowanie, więc można je usunąć ręcznie albo oczyścić automatycznie za pomocą SVGO. Zachowaj jednak <title> i <desc> — pomagają w dostępności.

Wskazówka 4: obniż precyzję dziesiętną

Współrzędne ścieżek często mają sześć do ośmiu miejsc po przecinku, podczas gdy renderowanie na ekranie potrzebuje jednego lub dwóch. Ustawienie floatPrecision na 1 lub 2 w konfiguracji SVGO wyraźnie zmniejsza plik bez zauważalnej różnicy. Przy bardzo małych ikonach nie ściskaj współrzędnych zbyt mocno, bo kształt się zniekształci.

3. Automatyzacja: jedno polecenie z SVGO

Wskazówka 5: optymalizuj automatycznie za pomocą SVGO

SVGO to de facto standardowe narzędzie do optymalizacji SVG, dostępne z dziesiątkami wtyczek: usuwanie komentarzy i metadanych, łączenie ścieżek, optymalizacja poleceń ścieżek i porządkowanie liczb. Podstawowe użycie:

npx svgo input.svg -o output.svg

Typowe pliki kurczą się o 30%–70%. Dwa zastrzeżenia: nie usuwaj atrybutu viewBox, bo skalowanie się zepsuje; przy ikonach, które mają być przekolorowywane przez CSS, zachowaj dziedziczone wypełnienie zamiast na stałe wpisywać kolor.

Porównaj rozmiar pliku i faktyczny rozmiar przesyłany w narzędziach deweloperskich przeglądarki przed optymalizacją i po niej, aby potwierdzić zysk. Zmieniaj tylko jeden rodzaj parametru za razem, dzięki czemu łatwo wskazać krok, który wprowadził problem.

4. Struktura i ponowne użycie: symbole i warstwy kolorów

Wskazówka 6: powtarzaj kształty przez defs i use

Gdy ta sama ikona pojawia się na stronie kilka razy, zdefiniuj ją raz przez <defs> i odwołuj się przez <use> albo zbuduj arkusz SVG — rozmiar pliku i liczba żądań spadną razem.

Wskazówka 7: kontroluj warstwy kolorów i unikaj osadzonych bitmap

Obniż liczbę kolorów podczas wektoryzacji, aby ograniczyć liczbę warstw, i tam, gdzie to możliwe, używaj jednolitego koloru zamiast złożonego gradientu. Przede wszystkim unikaj osadzania bitmap zakodowanych w base64 wewnątrz SVG — to zamienia plik wektorowy w nośnik rastrowy, a rozmiar wymyka się spod kontroli. Pozostałości ścieżek po konwersji można w edytorze online usunąć kliknięciem.

5. Dostarczenie: kompresja transportowa i buforowanie

Wskazówka 8: włącz gzip/Brotli i cache

SVG to tekst, więc włączenie gzip lub Brotli na serwerze zwykle obcina przesyłany rozmiar o kolejne 60%–80%; nadaj statycznym plikom SVG długie nagłówki cache. Bardzo małe ikony można osadzić wprost w HTML, co całkowicie oszczędza żądanie. Zasady stojące za tym opisuje Zalety SVG; aby kontrolować rozmiar już na etapie konwersji, przeczytaj Sposoby konwersji obrazu do SVG.

Kolejność ma znaczenie: kontroluj punkty zakotwiczenia i warstwy kolorów u źródła, czyść metadane i precyzję wewnątrz pliku, następnie uruchom SVGO, a na końcu włącz kompresję transportową. Gdy wszystkie cztery warstwy działają, pliki SVG zwykle kurczą się o rząd wielkości.

Najczęstsze pytania

Czy kompresja w SVGO zmienia wygląd grafiki?

Przy domyślnej konfiguracji różnica wizualna jest znikoma. Zachowaj viewBox, nie obniżaj precyzji współrzędnych zbyt mocno przy małych ikonach i w razie potrzeby wyłączaj agresywne wtyczki jedna po drugiej.

Jak bardzo można zmniejszyć plik SVG?

To zależy od redundancji, ale 30%–70% to wartość typowa; dodatkowe gzip lub Brotli po stronie serwera mogą obciąć rozmiar przesyłany o kolejne 60%–80%.

Spróbuj od razu

Skończyłeś samouczek? Poćwicz w darmowych narzędziach PolySVG:

Czytaj dalej