Gzip压缩组件(Gzip Components)
tag:server
前台工程师的决策能够显著的减少在网络上传输 HTTP请求和响应花费的时间。确实,终端用户的带宽速度、Internet服务提供商和连接交换机的服务器这些因素都是开发小组所不能控制的。但还有一些其它因素会影响响应的时间,比如压缩文件,就会减少HTTP响应的大小从而减少响应的时间。
从HTTP/1.1开始,Web客户端就被设定为支持HTTP请求的头部中Accept-Encoding指定的压缩格式:
Accept-Encoding: gzip, deflate
当服务器检测到请求头部中的这一代吗,它就会使用客户端提供的方法列表中的一个来压缩响应内容。而服务器通过响应头部中的Content- Encoding来告知客户端它所使用的压缩方式:
Content-Encoding: gzip
Gzip是当前最常用也是最有效的压缩方式,GNU项目开发了这一方法并且符合RFC 1952标准。另外一种你可能见过的压缩格式是deflate,但它没有那么有效和常用。
使用gzip压缩通常会减少70%的响应大小。当前浏览器中大约90%的Internet通讯传输声明支持gzip。如果你使用Apache服务器,配置gzip的模块取决于服务器的版本:Apache 1.3 使用mod_gzip ,而Apache 2.x 使用mod_deflate。
浏览器和代理会有一些已知的问题,可能导致浏览器的预期内容和获得的实际压缩内容不匹配。幸运的是,这种情况随着旧浏览器的使用者减少而减少。 Apache的模块可以通过自动添加适当的变化响应文件头来解决这些问题。
服务器会根据文件类型选择gzip压缩的内容,但一般情况下,服务器选择压缩的内容会过于局限。大部分网站会压缩它们的Html文档,而压缩脚本和样式表也是值得一做的,但很多网站并没有这样做,事实上,压缩在包括 XML和JSON在内的任何文本响应都是值得的。图片和PDF文件不应该被gzip压缩,因为它们已经是被压缩了的文件,gzip它们不仅浪费CPU甚至还有增大文件大小的可能。
Gzip尽可能多的文件类型是减少页面大小从而提高用户体验的一个简单的方法。