浏览器是否自动解压缩GZIP?

36

我按照以下网址 在IIS 8.0中启用了gzip压缩。 我通过jquery ajax调用和C#代码从我的应用程序调用外部rest服务,目前我的外部网络服务没有gzip压缩。如果我要求我的服务伙伴gzip压缩他们的响应,那么我需要在jquery端和c#端编写任何解压逻辑,还是浏览器会自动为我解压缩响应?

2个回答

54

所有现代浏览器都可以处理gzip编码的响应。实际上,如果您查看它们的请求,它们会有一个标题,大致说一下:Accept-Encoding: gzip,这是它们向服务器表明它们可以处理gzip响应的方式。

重要的部分是,您的服务器可以根据该标头的存在和值返回gzip和未压缩的响应。如果客户端没有发送 Accept-Encoding 标头,您不应该对其进行压缩。如果客户端发送了它,您可以选择使用gzip编码响应。并非所有内容都需要压缩,因为它可能已经被压缩,而且您正在浪费CPU周期。 JPEG图像通常是一个很好的例子。最有可能的是,IIS也在此做出明智的决定,并且仅在必要时压缩什么。

您可以通过查看从服务器返回的响应头并查找Content-Encoding: gzip头来验证IIS是否执行了正确的操作。这告诉客户端或浏览器,内容使用gzip压缩进行编码,应适当地解压缩它。

所有基于浏览器的请求(例如XHR / AJAX / jQuery,常规请求)都将自动解压缩,无需额外的努力。浏览器是负责确定是否可以处理gzip的客户端,并在需要时添加Accept-Encoding标头。您的JavaScript代码将在响应处理程序中接收未压缩的版本。

简而言之:打开它通常是一个好主意,您不需要做额外的工作。


4
如果在网站服务器上启用了gzip压缩,那么浏览器将自动解压缩,而不是通过应用逻辑。实际上,如果浏览器不支持压缩,则Web服务器将发送未经压缩的数据(此信息包含在浏览器和Web服务器之间交换的请求/响应HTTP标头中)。请注意,对于JPEG和其他已压缩格式,压缩无效。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接