什么是Gzip?
Gzip是GNUzip的缩写,它是一个GNU自由软件的文件压缩程序。它是Jean-loupGailly和MarkAdler一起开发的。
压缩原理
Gzip压缩背后的原理,是在一个文本文件中找出一些重复出现的字符串、临时替换它们,从而使整个文件变小。
根据这个原理,文件中代码的重复率越高,那幺压缩的效率就越高,使用Gzip的收益也就越大。反之亦然。
Gzip的优点
减少文件大小。gzip压缩比率在3到10倍左右,可以大大节省服务器的网络带宽。
减少文件大小有两个明显的好处:
是可以减少存储空间
是通过网络传输文件时,可以减少传输的时间
对于带宽较低的服务器是一种利好,开启后可以加快我们网站的打开速度,原理是经过服务器压缩,客户端浏览器快速解压的原理,可以大大减少了网站的流量。
Gzip的缺点
开启gzip后会额外的增加很多cpu的开销,会对服务器产生一起压力,同时,客户端解压也需要cpu开销(不过客户端还好),这也是不建议把压缩率设置太高的原因。
对图片的压缩支持不太好,会出现体积变大或图片失真的问题。
如何开启Gzip?
两个先行条件
要开启Gzip,需要先满足两个条件:
服务器支持并开启Gzip压缩服务
目前大多数的服务器都支持Gzip压缩服务,比如Nginx、IIS、Apache、tomcat等,只不过设置不同而已。
客户端(浏览器)支持Gzip解压服务
目前主流的浏览器都支持Gzip解压服务。
判断是否已开启Gzip服务?
通过查看HTTP请求来判断:
如果服务器开启了Gzip压缩服务,HTTP的响应头就会出现:
Content-Encoding: gzip
如果客户端支持Gzip解压服务,HTTP的响应头就会出现:
Accept-Encoding:gzip
Apache开启Gzip
宝塔windows面板apache默认没有开启Gzip压缩的,宝塔windows/linux面板Nginx默认都开启gzip压缩,下面介绍下宝塔windows面板apache开启Gzip压缩方法。
第1步
apache配置文件默认目录:D:\BtSoft\WebSoft\apache\conf
打开httpd.conf,找到如下配置项把前面的#去除
修改前: #LoadModule deflate_module modules/mod_deflate.so #LoadModule filter_module modules/mod_filter.so #LoadModule headers_module modules/mod_headers.so 修改后 LoadModule deflate_module modules/mod_deflate.so LoadModule filter_module modules/mod_filter.so LoadModule headers_module modules/mod_headers.so
第2步
在httpd.conf配置文件最后添加如下配置:
SetOutputFilter DEFLATE # Don’t compress images and other SetEnvIfNoCase Request_URI .(?:gif|jpe?g|png)$ no-gzip dont-vary SetEnvIfNoCase Request_URI .(?:exe|t?gz|zip|bz2|sit|rar)$ no-gzip dont-vary SetEnvIfNoCase Request_URI .(?:pdf|doc)$ no-gzip dont-vary AddOutputFilterByType DEFLATE text/HTML text/plain text/xml text/CSS AddOutputFilterByType DEFLATE application/x-JavaScript
上述操作完后重启apache服务
Nginx开启Gzip
gzip on; on为启用,off为关闭 gzip_min_length 1k; 设置允许压缩的页面最小字节数,页面字节数从header头中的Content-Length中进行获取。默认值是0,不管页面多大都压缩。建议设置成大于1k的字节数,小于1k可能会越压越大。 gzip_buffers 4 16k; 获取多少内存用于缓存压缩结果,4 16k表示以16k*4为单位获得,默认 4 8k gzip_proxied any; nginx做为反向代理时启用 off(关闭所有代理结果的数据的压缩), expired(启用压缩,如果header头中包括"Expires"头信息), no-cache(启用压缩,header头中包含"Cache-Control:no-cache"), no-store(启用压缩,header头中包含"Cache-Control:no-store"), private(启用压缩,header头中包含"Cache-Control:private"), no_last_modefied(启用压缩,header头中不包含"Last-Modified"), no_etag(启用压缩,如果header头中不包含"Etag"头信息), auth(启用压缩,如果header头中包含"Authorization"头信息) gzip_comp_level 3; 压缩比(1~9),越小压缩效果越差,但是越大处理越慢,所以一般取中间值; gzip_types text/plain application/x-JavaScript text/CSS text/javascript; 对特定的MIME类型生效,其中text/HTML被系统强制启用 gzip_http_version 1.1 识别http协议的版本,早起浏览器可能不支持gzip自解压,用户会看到乱码,默认1.1 gzip_vary on 启用应答头Vary: Accept-Encoding,一般不需要设置 gzip_disable msie6 (IE5.5和IE6 SP1使用msie6参数来禁止gzip压缩 )指定哪些不需要gzip压缩的浏览器(将和User-Agents进行匹配),依赖于PCRE库 gzip_static on; nginx 会优先匹配 gzip 文件来返回,如果没有就寻找相应资源进行 gzip 压缩再返回。
保存设置:在完成相关设置后,点击页面底部的“保存”按钮,保存配置修改。
重启Nginx:在保存设置后,宝塔面板会提示是否需要重启Web服务器,点击“重启”按钮,等待服务器重启完成。
完成以上步骤后,Gzip压缩就成功地在宝塔面板中开启了。此时,网站的属性在传输时会被自动压缩,从而提高了传输效率和速度。需要注意的是,开启Gzip压缩会增加服务器的CPU负载,因此在设置时要根据服务器的实际情况进行调整,避免过度压缩导致服务器性能下降。
还没有评论,来说两句吧...