Trình Tối Ưu Hóa SVG

Tối ưu hóa và nén các tệp SVG bằng cách loại bỏ chú thích, metadata và khoảng trắng không cần thiết.

Xem trước

Về tối ưu hóa SVG

Các tệp SVG được xuất từ Illustrator, Figma hoặc Inkscape thường chứa metadata, chú thích, thuộc tính riêng của trình chỉnh sửa và khoảng trắng dư thừa làm tăng kích thước tệp mà không ảnh hưởng đến kết xuất hình ảnh. Tối ưu hóa SVG có thể giảm kích thước từ 20 đến 60%, cải thiện thời gian tải. Công cụ này áp dụng các tối ưu hóa an toàn bảo toàn vẻ ngoài hình ảnh.

Cách hoạt động

  1. Dán hoặc tải lên SVG: nhập đánh dấu SVG trực tiếp hoặc tải lên tệp .svg được xuất từ Illustrator, Figma hoặc Sketch.
  2. Cấu hình các bước tối ưu hóa: chọn các tối ưu hóa nào để áp dụng, xóa chú thích, loại bỏ metadata, đơn giản hóa đường vẽ và chuẩn hóa viewBox.
  3. Tối ưu hóa: công cụ chạy các bước đã chọn và hiển thị phần trăm giảm kích thước.
  4. Tải xuống hoặc sao chép: lưu SVG đã tối ưu hoặc sao chép đánh dấu để dán vào mã của bạn.

Tại sao tối ưu hóa SVG của bạn?

Các tệp SVG được xuất từ các công cụ thiết kế đầy dữ liệu không cần thiết, metadata trình chỉnh sửa, khai báo kiểu nội tuyến với giá trị mặc định, các nhóm rỗng, các thuộc tính biến đổi dư thừa và chú thích. Sự dư thừa này tăng kích thước mà không thay đổi gì trong kết xuất. SVGO (trình tối ưu hóa SVG tiêu chuẩn ngành được sử dụng ở đây) thường có thể giảm kích thước từ 50 đến 80% trong khi vẫn bảo toàn kết xuất chính xác từng pixel. Các SVG nhỏ hơn tải nhanh hơn, được tích hợp nhanh hơn vào HTML và giảm băng thông, đặc biệt quan trọng đối với các hệ thống biểu tượng tải hàng chục SVG mỗi trang.

Các tối ưu hóa được áp dụng

Lịch sử ngắn về SVG và SVGO

Scalable Vector Graphics bắt đầu như một cuộc cạnh tranh giữa hai đề xuất W3C: Precision Graphics Markup Language (PGML) từ Adobe, IBM, Netscape và Sun, và Vector Markup Language (VML) từ Microsoft. Cả hai đều được nộp vào năm 1998; thỏa hiệp W3C đã trở thành SVG, được khuyến nghị là SVG 1.0 vào tháng 9 năm 2001. Internet Explorer nổi tiếng từ chối vận chuyển hỗ trợ SVG cho đến IE9 (2011), trong khi Firefox, Safari và Opera đã hỗ trợ nó từ giữa những năm 2000. SVG 1.1 xuất hiện vào năm 2003, với Phiên bản Thứ hai vào năm 2011. SVG Tiny 1.2 nhắm vào các thiết bị di động vào năm 2008. SVG 2 bắt đầu được soạn thảo vào khoảng năm 2016 nhưng đã bị đình trệ; ngày nay nó vẫn là Dự thảo Khuyến nghị Ứng cử viên (lần cuối được sửa đổi vào năm 2018), với các trình duyệt vận chuyển các phần riêng lẻ. Tối ưu hóa đến sau. SVGO được tạo bởi Kir Belevich (svg-go) và được xuất bản lần đầu trên GitHub vào tháng 10 năm 2012, được viết bằng JavaScript. Nó trở thành tiêu chuẩn thực tế, được tích hợp vào webpack-loader, Vite, Sketch, plugin xuất Figma, và UI web SVGOMG của Jake Archibald (nhóm Chrome) được ra mắt vào năm 2015. SVGO 3 (phát hành 2023) đã hiện đại hóa cơ sở mã. Công cụ này triển khai một tập hợp con an toàn của các plugin có tác động mạnh nhất của SVGO, chạy hoàn toàn trong trình duyệt của bạn.

Trình tối ưu hóa SVG thực sự làm gì

Nơi tối ưu hóa SVG quan trọng

Lỗi tối ưu hóa làm hỏng SVG

Thêm các câu hỏi thường gặp

Tối ưu hóa SVG thực sự có thể tiết kiệm bao nhiêu?

Nó phụ thuộc nhiều vào nguồn. Xuất khẩu Adobe Illustrator thường thu nhỏ 60-80% ở lần đầu tiên, chủ yếu từ siêu dữ liệu, namespace trình chỉnh sửa và giảm độ chính xác thập phân. Xuất khẩu Figma sạch hơn ngay từ đầu (thường tiết kiệm 20-40%). SVG được viết tay bởi một nhà phát triển? Thường 5-15%, vì không có nhiều để tước. Logo Wikipedia, trường hợp cực đoan của sự phồng Illustrator, từ 39 KB đến 11 KB. Một biểu tượng 24×24 điển hình từ Figma giảm từ 1,4 KB xuống 0,6 KB.

Khi nào tôi nên nhúng SVG so với sử dụng nó như một tệp bên ngoài?

Inline (<svg>...</svg> trong HTML) cho các biểu tượng nhỏ (dưới 2 KB), nội dung quan trọng phía trên gập, và bất cứ nơi nào bạn cần CSS để tạo kiểu SVG (ví dụ currentColor, trạng thái hover, chế độ tối). Tệp bên ngoài (<img src="icon.svg"> hoặc CSS background-image) cho các biểu tượng giống hệt nhau được sử dụng lặp đi lặp lại (trình duyệt lưu cache), hình minh họa lớn hơn, nội dung không cần chủ đề CSS. SVG sprite (tệp đơn với nhiều phần tử <symbol>, được tham chiếu bởi <use>) là mẫu hệ thống biểu tượng của 2014-2019, hiện được phần lớn thay thế bởi các thành phần inline-svg trong React/Vue/Svelte.

Có rủi ro bảo mật trong SVG không được tối ưu hóa không?

Có. SVG có thể nhúng các thẻ <script> và trình xử lý sự kiện onload, onclick; SVG do người dùng tải lên là một vector XSS. SVG có thể tham chiếu các tài nguyên bên ngoài qua <image href="...">, làm rò rỉ IP của người xem. Phông SVG (đã ngừng hoạt động nhưng vẫn có thể phân tích cú pháp) có lịch sử tràn bộ đệm. Một trình tối ưu hóa tốt tước <script> và các trình xử lý sự kiện như một phần của việc dọn dẹp; nếu bạn chấp nhận các tải lên SVG của người dùng, hãy chạy chúng qua một trình làm sạch được cứng hóa (DOMPurify với hồ sơ SVG) trước khi phục vụ.

Tôi có thể tối ưu hóa SVG bằng cách sử dụng dòng lệnh không?

Có. npx svgo input.svg -o output.svg sử dụng thư viện SVGO chính tắc. Cấu hình plugin qua svgo.config.js. Tích hợp CI: imagemin-svgo trong webpack, vite-plugin-svgo, GitHub Action antfu/svg-opt. Để tối ưu hóa hàng loạt: svgo -f ./icons -o ./icons-optimised. Công cụ trình duyệt ở đây nhanh hơn cho các trường hợp một lần và hoạt động mà không cần cài đặt Node.

SVG của tôi có được gửi đến máy chủ khi tôi tối ưu hóa ở đây không?

Không. Tối ưu hóa chạy hoàn toàn trong trình duyệt của bạn qua JavaScript trên markup SVG bạn dán. Mở tab Network trong DevTools khi tối ưu hóa; bạn sẽ thấy không có yêu cầu đi ra. An toàn cho logo độc quyền, thiết kế biểu tượng chưa phát hành, SVG doanh nghiệp nội bộ và bất cứ điều gì tuân theo NDA.

Công cụ liên quan