我什么时候应该在Web图形上使用SVG或SVGZ?


22

据我了解,

SVGZ是SVG的压缩文件类型。我喜欢使用SVG图像,并且对它们有很多经验。

我使用它们的所有时间中,我从未遇到过超过数百千字节的图形。

在制作响应式网站时,我将SVG用于响应式图形。我也使用它们,因为我最喜欢的设计风格是基于矢量的图形。我最强大的设计实力是插画家,尤其是在图形设计方面。

我会使用SVG图形的另一个原因是由于易于对图形的某些元素(例如手臂,腿等)进行动画处理。

尤其是背景元素,例如横跨整个页面的城市,同时我为灯光闪烁等设置了动画。

如果文件被压缩,它会丢失SVG代码,因此我无法对其进行动画处理吗?

有什么理由让我应该仅在SVG上使用SVGZ吗?

更新资料

好吧,我决定制作一个SVG和SVGZ来看看它们在网络上的作用,因为我发现我的作品古老的CS3可以保存SVGZ!

经过测试后,我遇到了SVGZ文件类型非常意外的问题。(已在Chrome,Firefox和IE上测试)如果转到图像的直接URL,则会收到错误消息。我假设您无法访问这些文件类型上的SVG代码,但是经过一番摆弄之后,它甚至似乎都没有显示图像。

这些对网络没有用吗?

.svg

.svgz

JSFIDDLE


.svgz使用正确的MIME类型似乎可以部分解决Web服务器配置问题的问题,请参见stackoverflow.com/questions/16725380/svgz-doesnt-display。我个人始终将Raphael.js用于Web上的SVG /矢量图形,因为我需要IE8支持
user56reinstatemonica8 2013年

嗯,谢谢您的有用链接。是否有任何理由使用SVGZ?我认为缩小图像文件的大小可能会很好。我只是很好奇一个SVGZ网站是否对网络有用或真的有用。
乔什·鲍威尔

如果可行,它将大大减少文件大小。如果您在复杂的事物上使用交互性(例如,可缩放的非常详细的SVG世界地图),这可能会很有用。该z手段gzip压缩它是用来减少文件大小,几乎没有别的。
user56reinstatemonica8

@JoshPowell:鉴于大多数http服务器使用gzip压缩发送内容,所以我看不到这个问题的目的。对于某些服务器,如果您将文件命名为.svg.gz,则浏览器将收到一条信息,说明原始文件未压缩。
user2284570

Answers:


9

对压缩svg的支持会因浏览器的不同而有所不同,但是您需要配置服务器以正确标记svgz文件及其有关编码的信息,以明确告知浏览器接收后如何对其进行解码。

svgz的服务器响应需要配置为包括“内容编码:gzip”

svg     Content-Type: image/svg+xml

svgz    Content-Type: image/svg+xml
        Content-Encoding: gzip

对于Apache Web服务器,这可以通过.htaccess文件来实现:

AddType image/svg+xml svg svgz
AddEncoding gzip svgz

请注意,无论是即时压缩它还是烘烤它,然后再将其放置在服务器上,都应提示内容编码。对于此类资产,我认为最好对其进行预压缩。否则,您正在为文件的每个请求占用服务器CPU。这看起来似乎不是很多,但这是导致诸如美国医疗保健网站这样的未优化问题。


如果您的服务器或平台完全是智能的,则执行压缩时会对其进行高度优化,因为它可以被缓存。
Josh Koenig 2015年

11

这可能不是您期望的答案,但是对于Web而言,使用任何SVGZ文件并不是真正需要的。原因是SVGZ文件只是已预压缩的SVG。

现代Web服务器可以在提供资产之前自己进行Gzip压缩(有关更多信息,请参见StackOverflow上的此答案),因此,如果您有一个300KB的SVG(压缩后为50KB),则自动由Web服务器压缩后的SVG大约与之相同。因此它不会是300KB,而是50KB,然后将被浏览器解压缩。


您确定压缩文件缓存在某个地方吗?一次又一次地将这些svg资产压缩为5000个访问者,这是一项艰巨的工作。
bokan 2014年

@bokan:某些服务器提供了通过附加.gz文件扩展名来预压缩内容的选项。因此,如果客户端寻找index.html,则服务器将使用名为index.html.gz的预压缩文件进行回答。
user2284570

@ user2284570:因此,您必须手动创建.gz。否则,它将在每次发送文件时压缩文件,这对于服务器来说是很多工作。
bokan 2015年

1
@bokan:是的,它通常需要比简单的Content-encoding压缩更多的其他服务器配置。甚至IE5也支持它。创建用于压缩目录中每个静态文件的脚本仍然很简单。在第二种情况下,这可以节省磁盘空间和带宽。
user2284570
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.