none
IE不支持下载.gz后缀的js文件吗? RRS feed

  • 问题

  • 我服务器上有一个“xxx.js”的脚本,同时还有一个用gzip压缩过的“xxx.js.gz”文件。用Chrome浏览器打开页面的时候,Chrome能够自动下载gz后缀的文件,而不是js文件。

    但是换成了IE,通过F12的网络页签监控,发现IE下载的仍然是js文件!?难道IE不支持gz压缩吗?


    da jia hao!

    2012年7月2日 3:44

答案

  • 如果代码里面请求的是.js文件,那么浏览器肯定会发请求.js文件的请求,chrome的行为我估计是先请求了.js文件,然后收到重定向的响应,重新发了个.gz的请求。不然的话就是客户端代码有判断,直接请求.gz文件。在对服务器一无所知,又没有代码控制的情况下,chrome也不会冒然发一个.gz的请求。

    根据你说的日志情况,IE的情况则有可能是发出的请求被服务器重写了,那就没有.gz的请求发出。但是日志记录的文件大小也不能完全断定就是采用了.gz文件,因为其他压缩方法如果用gzip的提供程序,那也有可能出现文件大小一样的情况。这个你可以到Domino相关的地方资询一下。

    还有个可能就这两个浏览器捕获请求的方式不一样,一个是基于接收到的实际文件,一个是基于发出的原始请求。这个你可以用Fiddler抓包看一下。

    2012年7月9日 8:39

全部回复

  • 我没有测试过,不过我觉得不支持的多。首先自动下载后缀的文件是如何实现的,我看到一些实现的方式是服务器接收到了.js的请求,根据服务器上是否有.gz的文件决定是否重写或重定向.js的请求,这里面可能还有对浏览器的判定,所以网络监控里看不到.gz的请求。

    另外一个问题是即使IE下载了.gz文件,是否会自动解压.gz文件以正确加载js代码。由于微软自身的IIS服务器实现的压缩技术是不一样的,还是请求.js文件,但在传输层面对响应进行压缩

    http://www.iis.net/ConfigReference/system.webServer/httpCompression

    2012年7月4日 3:59
  • 我的服务器是Domino。从IE的F12工具来看它下载的的确是js文件。但是我通过分析服务器端的日志,发现其实服务器输出给IE的却是gz文件,因为服务器日志记录的文件大小是不同的。所以可以得出结论,是否采用gz文件,其实是由服务器来决定。

    只是,我不明白,为什么Chrome可以明确显示它下载的是压缩版文件,而IE做不到呢?!


    da jia hao!

    2012年7月6日 3:16
  • 如果代码里面请求的是.js文件,那么浏览器肯定会发请求.js文件的请求,chrome的行为我估计是先请求了.js文件,然后收到重定向的响应,重新发了个.gz的请求。不然的话就是客户端代码有判断,直接请求.gz文件。在对服务器一无所知,又没有代码控制的情况下,chrome也不会冒然发一个.gz的请求。

    根据你说的日志情况,IE的情况则有可能是发出的请求被服务器重写了,那就没有.gz的请求发出。但是日志记录的文件大小也不能完全断定就是采用了.gz文件,因为其他压缩方法如果用gzip的提供程序,那也有可能出现文件大小一样的情况。这个你可以到Domino相关的地方资询一下。

    还有个可能就这两个浏览器捕获请求的方式不一样,一个是基于接收到的实际文件,一个是基于发出的原始请求。这个你可以用Fiddler抓包看一下。

    2012年7月9日 8:39