gzip压缩练习
为了提高网页的加载速度,启用gzip来减小资源的大小是一种非常常见的手段。现代浏览器都支持gzip压缩,并且会自动为HTTP请求协商这样的压缩。
本文将对gzip的实践和原理做一个简单的总结。
在收到浏览器的请求后,web服务器将检查浏览器可以接受哪些压缩方法。详见下图。
在浏览器的请求头中,将采用参数Accept-Encoding来解释浏览器支持哪些内容编码方法。
在服务器返回的响应头中有一个内容编码,用于解释数据压缩方法。
几乎所有的浏览器都已经支持gzip,并且有请求头的验证,所以基本不用担心兼容性问题。
在控制台中可以看到压缩前后的体积差异。可以说js和css文件的压缩率还是比较可观的。
使用这种配置,当服务器响应请求时,文件将被压缩,然后压缩的内容将被返回。但是压缩的过程或多或少会占用一些服务器性能,具体的压缩程度,也就是gzip_comp_level设置的值,也会影响性能。接下来,我们来看看网上收集的一些数据,了解不同的值对文件大小和CPU使用率的影响。
可以看到,当压缩级别从0到1时,文件大小明显减小,CPU消耗略有增加。之后文件缩减的速度明显变慢,达到5后压缩级别继续增加,文件量几乎没有减少,但CPU消耗明显增加。
根据结论,如果在服务器端使用gzip压缩,考虑到性能和压缩率的权衡,将压缩级别设置为较低的值是合理的,比如2。
在打包和构建项目时,我们也可以选择gzip压缩文件。
这里以打包一个webpack的前端项目为例。
运行build命令后,您可以看到。js和。css与相应的。gz文件。
在这种压缩方式中,我们完全可以将压缩级别设置为更高的值(默认)。毕竟只是稍微影响了打包时间,但是得到一个更小的包还是值得的。
以nginx为例。静态压缩需要模块http_gzip_static_module。这个模块不是默认的,应该使用-with-http _ gzip _ static _ module的配置参数来启用它。
然后添加到配置中。
这将打开静态压缩。
请注意以下几点:
gzip压缩默认压缩比?
一般情况下,默认压缩比和最佳压缩比(-6和-9):没必要为了增加那一点点的压缩比(1G的原文本文件最终只差了几兆)而增加非常明显(甚至翻倍)的压缩/解压缩时间
默认压缩比和最小压缩比(耗时最短)之间:如果能容忍低一点的压缩比(1G原文本文件最终差4 5十兆)同时注重耗时的话(压缩/解压缩耗时能大幅下降甚至下降一半),可以选择最地的压缩比来获得最高的处理效率
bzip的压缩比在同等级别下都要略高于gzip,但是耗时却明显的高于gzip(基本2倍上下)
不同的压缩比下,gzip的耗时敏感度要高于bzip,即不同压缩比下,gzip耗时的增减幅度要大于bzip(但都远小于bzip)
linux下怎么解后缀名是gzip的文件?
语法:unzip〔选项〕压缩文件名.zip
各选项的含义分别为:
-x文件列表解压缩文件,但不包括指定的file文件。
-v查看压缩文件目录,但不解压。
-t测试文件有无损坏,但不解压。
-d目录把压缩文件解到指定目录下。
-z只显示压缩文件的注解。
-n不覆盖已经存在的文件。
-o覆盖已存在的文件且不要求用户确认。
-j不重建文档的目录结构,把所有文件解压到同一目录下。
例1:将压缩文件text.zip在当前目录下解压缩。
$unziptext.zip
例2:将压缩文件text.zip在指定目录/tmp下解压缩,如果已有相同的文件存在,要求unzip命令不覆盖原先的文件。
$unzip-ntext.zip-d/tmp
例3:查看压缩文件目录,但不解压。
$unzip-vtext.zip
zgrep命令
这个命令的功能是在压缩文件中寻找匹配的正则表达式,用法和grep命令一样,只不过操作的对象是压缩文件。如果用户想看看在某个压缩文件中有没有某一句话,便可用zgrep命令。
网页弄个gzip压缩,好还是不好?
gzip 能够压缩文本,减小网页的html代码体积,加快传输到用户浏览器的速度。
虽然压缩会耗用服务器一点资源,但从各方面来说,开起来总是会好点的。
如果你的网站整体有很多图片,开起来效果不明显。