我正坐在这里使用SVG,我想使用SVGZ对这些文件进行gzip - 问题是,当我打开SVGZ文件时出现此错误:
此页面包含以下错误:
第1行第1行的错误:编码错误下面是渲染 页面直到第一个错误。
我尝试在不同类型的应用程序中创建相同的svg,并在不同的浏览器甚至服务器中尝试过。我之前和svgz一起工作过,我可以在那里展示它,但它已经有一段时间了......
任何知道如何解决这个问题的人?
答案 0 :(得分:0)
很难从您提供的信息中猜出,但看起来好像您在没有正确设置Content-Encoding:gzip的情况下发送gzip压缩包。这将导致浏览器的XML解析器无法解析内容,因为它不是XML。
答案 1 :(得分:0)
我发现确保将“图片位置”设置为“嵌入”并且在保存为SVG设置中没有“链接”为我工作
答案 2 :(得分:0)
我遇到了同样的问题,经过一番挖掘后找到了解决方案。 我的解决方案是针对IIS的,但在测试中我在Apache上发现了相同的行为。
svgz的MIME类型有些错误,因为与未压缩的SVG相同:
image/svg+xml
因此,要在IIS上启用SVGZ服务,我必须添加一个重写规则,该规则添加了hedaer
Content-Encoding: gzip
这是可行的,但有时浏览器会收到以前的编码错误。
问题在于服务器将svgz视为静态内容,并且由于在站点上启用了“静态压缩”,因此客户端有时会接收原始内容,有时会接收压缩(并缓存)的内容,因为服务器不知道它们之间的区别压缩操作启用了gzip Content-Encoding标头,而重写规则一直都在启用。
客户端实际上无法理解服务器何时重新压缩内容,何时不压缩。
可能的解决方案是:
可以通过编辑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的第一篇文章!