2013-02-22 50 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