代码之家  ›  专栏  ›  技术社区  ›  medk

Safari不接受gZipped内容?

  •  4
  • medk  · 技术社区  · 14 年前

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

    这些文件是style.gz和js.gz,用作静态文件。

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

    这些浏览器的工作正常:

    火狐3.6.10/Google Chrome 6.0.4…/IE 8 X64/Flock 3.0.6/Maxthon 2.5.15…/Avant浏览器2010

    除了野生动物,它们都很好用。

    我使用的是Windows 7 x64

    3 回复  |  直到 6 年前
        1
  •  3
  •   rob_james    14 年前

    您应该让服务器对它们进行gzip处理——这可以在htaccess文件中完成,并且工作得很好。

        2
  •  2
  •   bobince    14 年前

    +罗布说的。

    你所做的是一个不应该工作的黑客,所以当它失败时你不能真正抱怨。为gzip资源提供服务与使用 Content-Encoding 将其压在电线上。

    对于不了解gzip的用户代理来说,提供预gzip文件显然也会失败。HTTP标准提供了一种协商机制: Accept-Encoding 内容编码 . 除非你以一种完整的、符合标准的方式重新实现这个机制(而迈克尔链接中的文章没有 开始 为了正确起见),你阻止了客户。

    这完全是不必要的。gzip速度很快,服务器通常会缓存静态内容的压缩版本,因此您不必再去猜测它了。HTTP压缩是Web服务器核心能力的一部分,让Web服务器完成它的工作,而不必使用gzip。

        3
  •  1
  •   Michael Goldshteyn    14 年前

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

    Fix for .gz and Safari