2013-02-22 48 views
3

將數據URI包含在HTML頁面中時,最好使用ASCII,UTF-8還是base64?數據URI ASCII,UTF-8或base64

我使用它可以被表示爲任意這些的SVG文件。

的UTF-8(URI一次編碼)仍然比的base64當未壓縮的更小了一點,但還有其他的好處(比如在CPU性能)來用base64是?

+1

你有沒有試過svgz的Base64? – 2013-02-22 18:56:30

+0

@JonSkeet我認爲它可以節省更多的空間來使用UTF-8,因爲如果整個頁面被壓縮(如它應該),SVG也會被壓縮。 – 2014-08-29 06:59:34

回答

4

我正在做一些與此相關的測試。關於前端,我認爲除了需要在渲染之前解碼的base64之外,將沒有什麼區別。服務器端文件越小,處理的數據越少,使用的CPU就越少。有了這個我懷疑UTF-8將是CPU密度最小的服務器端。

一些semirelated注意事項:

在文件大小SVG方面戰勝PNG當服務器的gzip。

我讀過有一個小的CPU,由於開啓服務器端使用gzip壓縮的打擊。但是,由於不必處理更少的數據,CPU的利益就不得不對每個文件進行gzip壓縮。

SVG的更處理器密集型渲染比PNG,JPG,GIF,BMP等位圖可以只進行渲染。 SVG需要進行計算,柵格化和渲染。在動畫製作許多或複雜的svgs時需要注意的地方。

一些統計我發現

  • 標誌PNG = 9.2kb - >的gzip = 9.2kb
  • 標誌SVG = 10.5kb - >的gzip = 4.4kb的
  • 使用Python沖刷以優化後的標誌的svg SVG = 9.4kb - >的gzip = 3.9kb
  • 標誌SVG URL編碼= 10.9kb - > gzip的4KB
  • 標誌SVG base64編碼= 12.4 - > gzip的速度5.5KB
+0

+1,但我只想提一提,我運行了一些測試,在優化SVG時,[* svgo *](https://github.com/svg/svgo)比scour好上千倍。只要試一試,如果你看看它有多少事情,它只是瘋了。 Node.js而不是Python的事實也只是錦上添花。 – 2014-08-29 03:54:48

+0

另外,根據您的標誌的視覺複雜性,即使是未壓縮的SVG可能已經比PNG(或相反的:P)小 – 2014-08-29 03:56:03

+0

另一個需要注意的有關動畫:變形SVG的東西,如2D或3D變換是至少一個數量級大於變形PNG(這基本上只是一個矩陣變換)。 – 2014-08-29 07:01:22