我已按照网址启用了IIS 8.0中的gzip压缩功能 Enabling Gzip in IIS on Windows 8 我通过jquery ajax调用和C#代码从我的应用程序调用外部休息服务,目前我的外部Web服务不是gzip压缩的。如果我要求我的服务合作伙伴gzip他们的回复,我是否需要在jquery方面的代码中编写任何解压缩逻辑,c#side或浏览器会自动为我解压缩响应?
答案 0 :(得分:22)
所有现代浏览器都可以处理gzip编码的响应。事实上,如果你查看他们的请求,他们会有一个标题,上面写着Accept-Encoding: gzip
的内容,这是他们向服务器说他们可以处理gzip压缩响应的方式。
重要的是,您的服务器可以返回gzip和未压缩的响应,具体取决于该标头的存在和值。如果客户端没有发送Accept-Encoding
标头,则您不应该压缩它。如果客户端确实发送了它,您可以选择使用gzip对响应进行编码。并非所有内容都需要压缩,因为它可能已经被压缩,并且您正在浪费CPU周期。 JPEG图像通常就是一个很好的例子。最有可能的是,IIS在这里做出了明智的决定,并且只在必要时压缩必要的内容。
您可以通过查看从服务器返回的响应标头并查找Content-Encoding: gzip
标头来验证IIS是否正在执行的操作。这告诉客户端或浏览器,内容是使用gzip压缩编码的,它应该适当地解压缩。
所有基于浏览器的请求(例如,AJAX / jQuery,常规请求)将自动解压缩而无需您的额外努力。浏览器是负责确定它是否可以处理gzip的客户端,如果是,则会添加Accept-Encoding
标头。您的JavaScript代码将在您的响应处理程序中收到它的未压缩版本。
TL; DR :打开它通常是一个好主意,你不需要做额外的工作。
答案 1 :(得分:1)
如果在Web服务器上启用了gzip压缩,即不在应用程序逻辑中,则浏览器将自动解压缩。
事实上,如果浏览器不支持压缩,则Web服务器将发送未压缩的数据(此信息位于浏览器和Web服务器之间交换的请求/响应http标头中)。请注意,JPEG和其他已经压缩的格式压缩无效。