【问题标题】:Data URI ASCII, UTF-8, or base64数据 URI ASCII、UTF-8 或 base64
【发布时间】:2013-02-22 18:52:33
【问题描述】:

在 HTML 页面中包含数据 URI 时,最好使用 ASCII、UTF-8 还是 base64?

我将它用于可以表示为任何这些的 SVG 文件。

UTF-8(经过 URI 编码)在未压缩时仍然比 base64 小一点,但是使用 base64 是否还有其他好处(比如 CPU 性能)?

【问题讨论】:

  • 你试过Base64的svgz吗?
  • @JonSkeet 我认为使用 UTF-8 可能会节省更多空间,因为如果整个页面被压缩(应该如此),SVG 也会被压缩。

标签: svg base64 data-uri data-url data-uri-scheme


【解决方案1】:

我正在做一些与此相关的测试。关于前端,我认为除了 base64 需要在渲染之前进行解码之外,差别很小。服务器端文件越小,要处理的数据越少,使用的cpu就越少。有了这个,我怀疑 UTF-8 将是 CPU 密集度最低的服务器端。

一些半相关的注释:

就文件大小而言,当服务器 gzip 压缩时,svg 胜过 png。

我了解到,由于打开服务器端 gzip 压缩,cpu 会受到很小的影响。但是,处理较少的数据输出所带来的 CPU 收益相当于必须对每个文件进行 gzip 压缩。

SVG 的渲染比 png、jpg、gif、bmp 等处理器更密集。位图可以仅被渲染。 SVG 需要计算、光栅化,然后渲染。为许多或复杂的 svg 制作动画时需要注意的事项。

我发现的一些统计数据

  • logo png = 9.2kb -> gzip = 9.2kb
  • 徽标 svg = 10.5kb -> gzip = 4.4kb
  • 使用python scour优化svg后的logo svg = 9.4kb -> gzip = 3.9kb
  • logo svg url 编码 = 10.9kb -> gzip 4kb
  • logo svg base64 编码 = 12.4 -> gzip 5.5kb

【讨论】:

  • +1,但我只想提一下,我进行了一些测试,svgo 在优化 SVG 方面比 scour 好一千倍。试一试,如果你看看它做了多少事情,那就太疯狂了。它是 Node.js 而不是 Python 的事实也只是锦上添花。
  • 另外,根据您徽标的视觉复杂性,即使是未压缩的 SVG 也可能已经小于 PNG(或相反的 :P)
  • 关于动画的另一个注意事项:使用 2D 或 3D 变换之类的东西变形 SVG 至少比变形 PNG(基本上只是矩阵变换)难一个数量级。
猜你喜欢
  • 2011-12-13
  • 1970-01-01
  • 2014-02-13
  • 1970-01-01
  • 1970-01-01
  • 2013-01-26
  • 2014-06-19
  • 2012-10-29
  • 2013-04-19
相关资源
最近更新 更多