SVGZ给出了编码错误

时间:2011-10-23 07:44:26

标签: svg

我正坐在这里使用SVG,我想使用SVGZ对这些文件进行gzip - 问题是,当我打开SVGZ文件时出现此错误:

  

此页面包含以下错误:

     第1行第1行的

错误:编码错误下面是渲染   页面直到第一个错误。

我尝试在不同类型的应用程序中创建相同的svg,并在不同的浏览器甚至服务器中尝试过。我之前和svgz一起工作过,我可以在那里展示它,但它已经有一段时间了......

任何知道如何解决这个问题的人?

3 个答案:

答案 0 :(得分:0)

很难从您提供的信息中猜出,但看起来好像您在没有正确设置Content-Encoding:gzip的情况下发送gzip压缩包。这将导致浏览器的XML解析器无法解析内容,因为它不是XML。

答案 1 :(得分:0)

我发现确保将“图片位置”设置为“enter image description here嵌入”并且在保存为SVG设置中没有“链接”为我工作

答案 2 :(得分:0)

我遇到了同样的问题,经过一番挖掘后找到了解决方案。 我的解决方案是针对IIS的,但在测试中我在Apache上发现了相同的行为。

svgz的MIME类型有些错误,因为与未压缩的SVG相同:

image/svg+xml

因此,要在IIS上启用SVGZ服务,我必须添加一个重写规则,该规则添加了hedaer

Content-Encoding: gzip

这是可行的,但有时浏览器会收到以前的编码错误。

问题在于服务器将svgz视为静态内容,并且由于在站点上启用了“静态压缩”,因此客户端有时会接收原始内容,有时会接收压缩(并缓存)的内容,因为服务器不知道它们之间的区别压缩操作启用了gzip Content-Encoding标头,而重写规则一直都在启用。

客户端实际上无法理解服务器何时重新压缩内容,何时不压缩。

可能的解决方案是:

  • 完全禁用静态压缩
  • 为image / svg + xml MIME类型禁用静态压缩MIME映射。这也将禁用svg的压缩,但是如果您的站点仅提供svgz,则不会有问题。

可以通过编辑applicationHost.config来启用IIS的第二个解决方案:

    <httpCompression directory="%SystemDrive%\inetpub\temp\IIS Temporary Compressed Files">
        <scheme name="gzip" dll="%Windir%\system32\inetsrv\gzip.dll" />
        <staticTypes>
            <...>
            <add mimeType="image/svg+xml" enabled="false" />
        </staticTypes>
    </httpCompression>

希望这会对您有所帮助。

PS:这是我关于stackoverflow的第一篇文章!