Safari不接受gzip压缩内容?

时间:2010-10-17 21:36:43

标签: gzip

我正在开发一个网站,我正在使用gzip.exe来预压缩css和js文件(它只有1个css文件,从4.53 KB到1.50 KB,以及一个包含jquery和一些脚本的js文件从72.8 KB到24.7 KB)

这些文件是style.gz和js.gz,并作为静态文件提供。

问题是它们不适用于Safari(v5.0.2)而不适用于CSS而不是js。

这些浏览器的工作正常:

Firefox 3.6.10 / Google Chrome 6.0.4 ... / IE 8 x64 / Flock 3.0.6 / Maxthon 2.5.15 ... / Avant Browser 2010

所有这些都可以正常工作,除了Safari

我正在使用Windows 7 x64

3 个答案:

答案 0 :(得分:3)

您应该让服务器对它们进行gzip - 这可以在htaccess文件中完成,并且运行正常。

答案 1 :(得分:2)

+1抢劫说什么。

你正在做的是一个不应该工作的黑客,所以当它失败时你不能真正抱怨。提供gzip资源与使用Content-Encoding标头在线路上压缩它的不同类型的资源完全不同。

对于不了解gzip的用户代理,服务预先gzip压缩的文件显然也会失败。 HTTP标准提供了一种协商机制:Accept-EncodingContent-Encoding。除非您以完全符合标准的方式重新实现该机制(并且Michael的链接中的文章开始才能正确实现),否则您将阻止客户端。

这都是不必要的。 Gzip速度很快,服务器通常会缓存静态内容的压缩版本,因此您可以通过尝试进行二次猜测来获得任何收益。 HTTP压缩是Web服务器核心竞争力的一部分,让Web服务器完成其工作并单独留下gzip。

答案 2 :(得分:1)

有一种方法可以解决这个问题。基本上,您需要使用.jgz而不是.gz作为JavaScript文件的扩展名:

Fix for .gz and Safari