在基于HTTP协议的网络传输中GZIP经常被使用,Nginx中也可以使用半行代码开启GZIP。然而,尽管GZIP如此火热还是会有一些小伙伴们不知所云。本文就带这些小伙伴们一起学习GZIP是什么?
首先我们来明确一下GZIP的定义,GZIP是若干种文件压缩程序的简称,通常指GNU计划的实现,此处的GZIP代表GNU zip。GZIP也经常用来表示gzip这种文件格式。GZIP 的文件格式在设计上其实是可以允许一个文件里有多个压缩数据集(compressed data sets)—— GZIP 压缩后的片段拼接而成的。但就我们大多数应用场景来说,基本上都是一个文件一个压缩数据集,如果是多个文件一起打包的话,也往往是将多个包合并成一个 tar文件。
GZIP最早由Jean-loup Gailly和Mark Adler创建,主要是用于UNⅨ系统的文件压缩的。实际上,我们在Linux中经常会用到后缀为.gz的文件就是GZIP格式的。现今GZIP已经成为Internet 上使用非常普遍的一种数据压缩格式,或者说一种文件格式。
HTTP协议上的GZIP编码是一种用来改进WEB应用程序性能的编程技术。流量大的WEB站点常常使用GZIP压缩技术来让用户感受更快的速度和网站浏览体验。这一般是指WWW服务器中安装的一个功能,当有人来访问这个服务器中的网站时,服务器中的这个功能就将网页内容压缩后传输到来访的电脑浏览器中显示出来.一般对纯文本内容可压缩到原大小的40%.这样传输就快了,效果就是你点击网址后会很快的显示出来.当然这也会增加服务器的负载. 一般服务器中都安装有这个功能模块的。
GZIP的基础是DEFLATE,DEFLATE是LZ77与哈夫曼编码的一个组合体。DEFLATE最初是作为LZW以及其它受专利保护的数据压缩算法的替代版本而设计的,当时那些专利限制了compress以及其它一些流行的归档工具的应用。
GZIP文件格式说明:
1.10字节的头,包含幻数、版本号以及时间戳
2.可选的扩展头,如原文件名
3.文件体,包括DEFLATE压缩的数据
4.8字节的尾注,包括CRC-32校验和以及未压缩的原始数据长度
尽管这种文件格式允许多个这样的数据拼接在一起,在解压时也能认出它们是拼接在一起的数据,但通常GZIP仅用来压缩单个文件。多个文件的压缩归档通常是首先将这些文件合并成一个tar文件,然后再使用gzip进行压缩,最后生成的.tar.gz或者.tgz文件就是所谓的“tar压缩包”或者“tarball”。
gzip和ZIP压缩格式很容易出现混淆。ZIP也使用DEFLATE算法,而且可移植性更好,不需要一个外部的归档工具就可以包容多个文件。但是,由于ZIP对每个文件进行单独压缩而没有利用文件间的冗余信息(即固实压缩),所以ZIP的压缩率会稍逊于tar压缩包。
gzip是在Linux系统中经常使用的一个对文件进行压缩和解压缩的命令,既方便又好用。减少文件大小有两个明显的好处,一是可以减少存储空间,二是通过网络传输文件时,可以减少传输的时间。
在RFC 2016中GZIP已经成为了规定的三种标准HTTP压缩格式之一。目前绝大多数的网站都在使用GZIP传输 HTML、CSS、JavaScript等资源文件。GZIP的发展无疑越来越迅速,用途也愈来愈广,也成为我们必须掌握的一种应用程序。我们学习开发编程的这些人需要紧跟时代技术的发展,掌握实时流行的技术和框架才能与时俱进,不被时代的洪流冲走,变得随波逐流。通过以上的介绍GZIP是什么的知识问题应该有所了解吧!如果还不是太清楚,可以找相应视频去看看。
QCode09-04 14:38
Code大师09-04 14:50
不写代码你养我啊08-23 11:14
不写代码你养我啊09-17 18:02
要学习了06-18 18:13