本帖最后由 real 于 2024-10-1 12:04 编辑
[color=rgba(58, 58, 58, 0.88)] 什么是Gzip?[color=rgba(58, 58, 58, 0.88)]Gzip是GNUzip的缩写,它是一个GNU自由软件的文件压缩程序。它是Jean-loupGailly和MarkAdler一起开发的。 [color=rgba(58, 58, 58, 0.88)]压缩原理 [color=rgba(58, 58, 58, 0.88)]Gzip压缩背后的原理,是在一个文本文件中找出一些重复出现的字符串、临时替换它们,从而使整个文件变小。 [color=rgba(58, 58, 58, 0.88)]根据这个原理,文件中代码的重复率越高,那幺压缩的效率就越高,使用Gzip的收益也就越大。反之亦然。 [color=rgba(58, 58, 58, 0.88)]Gzip的优点 [color=rgba(58, 58, 58, 0.88)]减少文件大小。gzip压缩比率在3到10倍左右,可以大大节省服务器的网络带宽。 [color=rgba(58, 58, 58, 0.88)]减少文件大小有两个明显的好处: [color=rgba(58, 58, 58, 0.88)]是可以减少存储空间 [color=rgba(58, 58, 58, 0.88)]是通过网络传输文件时,可以减少传输的时间 [color=rgba(58, 58, 58, 0.88)]对于带宽较低的服务器是一种利好,开启后可以加快我们网站的打开速度,原理是经过服务器压缩,客户端浏览器快速解压的原理,可以大大减少了网站的流量。 [color=rgba(58, 58, 58, 0.88)]Gzip的缺点 [color=rgba(58, 58, 58, 0.88)]开启gzip后会额外的增加很多cpu的开销,会对服务器产生一起压力,同时,客户端解压也需要cpu开销(不过客户端还好),这也是不建议把压缩率设置太高的原因。 [color=rgba(58, 58, 58, 0.88)]对图片的压缩支持不太好,会出现体积变大或图片失真的问题。 如何开启Gzip?[color=rgba(58, 58, 58, 0.88)]两个先行条件 [color=rgba(58, 58, 58, 0.88)]要开启Gzip,需要先满足两个条件: [color=rgba(58, 58, 58, 0.88)]服务器支持并开启Gzip压缩服务 [color=rgba(58, 58, 58, 0.88)]目前大多数的服务器都支持Gzip压缩服务,比如Nginx、IIS、Apache、tomcat等,只不过设置不同而已。 [color=rgba(58, 58, 58, 0.88)]客户端(浏览器)支持Gzip解压服务 [color=rgba(58, 58, 58, 0.88)]目前主流的浏览器都支持Gzip解压服务。 [color=rgba(58, 58, 58, 0.88)]判断是否已开启Gzip服务? [color=rgba(58, 58, 58, 0.88)]通过查看HTTP请求来判断: [color=rgba(58, 58, 58, 0.88)]如果服务器开启了Gzip压缩服务,HTTP的响应头就会出现:
[color=rgba(58, 58, 58, 0.88)]如果客户端支持Gzip解压服务,HTTP的响应头就会出现: - Accept-Encoding:gzipApache开启Gzip
复制代码
[color=rgba(58, 58, 58, 0.88)]宝塔windows面板apache默认没有开启Gzip压缩的,宝塔windows/linux面板Nginx默认都开启gzip压缩,下面介绍下宝塔windows面板apache开启Gzip压缩方法。 [color=rgba(58, 58, 58, 0.88)]第1步 [color=rgba(58, 58, 58, 0.88)]apache配置文件默认目录:D:\BtSoft\WebSoft\apache\conf [color=rgba(58, 58, 58, 0.88)]打开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
复制代码
[color=rgba(58, 58, 58, 0.88)]第2步 [color=rgba(58, 58, 58, 0.88)]在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
复制代码
[color=rgba(58, 58, 58, 0.88)]上述操作完后重启apache服务 Nginx开启Gzip[color=rgba(58, 58, 58, 0.88)]登录宝塔面板。 [color=rgba(58, 58, 58, 0.88)]在宝塔面板左侧菜单栏找到软件商店,选择已安装,找到Nginx并进入设置 [color=rgba(58, 58, 58, 0.88)]在Nginx性能调整选项里开启“Gzip”压缩,设置好相关参数 [color=rgba(58, 58, 58, 0.88)]
[color=rgba(58, 58, 58, 0.88)]配置属性 - 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 压缩再返回。
复制代码
[color=rgba(58, 58, 58, 0.88)]
[color=rgba(58, 58, 58, 0.88)]保存设置:在完成相关设置后,点击页面底部的“保存”按钮,保存配置修改。
[color=rgba(58, 58, 58, 0.88)]重启Nginx:在保存设置后,宝塔面板会提示是否需要重启Web服务器,点击“重启”按钮,等待服务器重启完成。 [color=rgba(58, 58, 58, 0.88)]完成以上步骤后,Gzip压缩就成功地在宝塔面板中开启了。此时,网站的属性在传输时会被自动压缩,从而提高了传输效率和速度。需要注意的是,开启Gzip压缩会增加服务器的CPU负载,因此在设置时要根据服务器的实际情况进行调整,避免过度压缩导致服务器性能下降。
|