【发布时间】:2017-01-17 01:47:49
【问题描述】:
有没有人经历过以下性能的差异:
- 人类 SVG(多边形、圆形、椭圆、矩形、直线、文本等形状)(由人类在文本编辑器中输入)
- 应用程序 SVG(路径)(由应用程序生成/导出为 svg)
什么在浏览器中渲染得更快?以字节为单位的大小更小?
我敢打赌,这可能很大程度上取决于实际形象,但我想知道是否有一些通用规则,以及我们是否可以想出一个社区模式。
这是对问题的后续跟进:Examples of polygons drawn by path vs polygon in SVG,作者:chris Frisina。
上下文:我正在通过使用数据 URI(保存在 DOM 节点和 HTTP 请求上)将简单的 JPEG 背景替换为 SVG(以保存字节)作为 CSS3 背景图像来减少绘制时间。我无法决定是否应该使用 Human SVG 或 Application SVG 以及是否应该使用 Base64 编码(我读了很多现代浏览器可以将 UTF-8 用于 SVG,但我想知道这是否适用于 Human SVG 或仅适用于路径!)。
【问题讨论】:
-
所有这些问题的答案都是“测试并查看”。我非常怀疑会有任何显着差异。主要是因为规范规定基本形状无论如何都要在内部转换为路径表示。即使有差异,也不一定在浏览器之间保持一致。
-
您的另一个误解是 CSS3 背景图像与内联 SVG 具有相同数量的 DOM 节点,您只是无法访问它们。
-
@RobertLongson 抱歉,我的帖子肯定不够清楚——我同意你的观点,CSS3 背景图像与内联 SVG 具有相同数量的 dom 节点。它是数据 URI,使它只有一个图像 DOM 节点。如果没有数据 URI,Human SVG 中的每个元素都将成为它自己的节点,这会影响绘制和流动时间。
-
数据 URI 具有内部 DOM 节点。我不希望油漆流量和时间有很大不同。试试看,当然。