咱们知道作好负载均衡对网站的正常运行,用户体验至关重要。在负载均衡中有一个必需要作的事情就是给服务器开启GZIP压缩功能,对用户请求的页面进行压缩处理,以达到节省网络带宽,提升网站速度的做用。javascript
GZIP是若干文件压缩程序的简称,一般指GNU计划的实现,此处的GZIP表明的就是GUN ZIP,这也是HTTP1.1协议定义的两种压缩方法中最经常使用的一种压缩方法,客户端浏览器大都支持这种压缩格式。接下来,DNSLA将介绍apache、IIS、nginx 这些如今流行的web服务器如何开启GZIP压缩的方法。php
Apache开启GZIP要看查看是否已经开启mod_deflate模块,若是没有则须要先加载,在配置文件httpd.conf中将css
LoadModule deflate_module modules/mod_deflate.so
LoadModule headers_module modules/mod_headers.so
复制代码
前面的#号去掉。DNSLA建议,若是对apache的配置文件不太懂的客户在修改配置文件以前对配置文件进行备份。html
开启模块后,在httpd.conf配置文件的最下面空白处添加一下内容:java
<IfModule mod_deflate.c> # 告诉 apache 对传输到浏览器的内容进行压缩 SetOutputFilter DEFLATE # 压缩等级 9 DeflateCompressionLevel 9 </IfModule> 复制代码
这样就能对全部文件进行 gzip 压缩了。压缩等级是个 1-9 之间的整数,取值范围在 1(最低) 到 9(最高)之间,不建议设置过高,虽然有很高的压缩率,可是占用更多的CPU资源。nginx
实际开发中咱们并不须要对全部文件进行压缩,好比咱们无需对图片文件进行gzip压缩,由于图片文件(通常为jpg、png等格式)自己已经压缩过了,再进行gzip压缩可能会拔苗助长(详见图片要启用gzip压缩吗?绝对不要!,背景图片千万不要gzip压缩,尤为是PNG),相似的还有 PDF 以及音乐文件。因此咱们能够设置过滤指定文件或者对指定文件进行压缩。web
好比咱们要对图片等特殊文件不进行 gzip 压缩处理:apache
<IfModule mod_deflate.c> # 告诉 apache 对传输到浏览器的内容进行压缩 SetOutputFilter DEFLATE # 压缩等级 9 DeflateCompressionLevel 9 #设置不对后缀gif,jpg,jpeg,png的图片文件进行压缩 SetEnvIfNoCase Request_URI .(?:gif|jpe?g|png)$ no-gzip dont-vary </IfModule> 复制代码
或者指定文件格式进行压缩:windows
<IfModule mod_deflate.c> # 压缩等级 9 DeflateCompressionLevel 9 # 压缩类型 html、xml、php、css、js AddOutputFilterByType DEFLATE text/html text/plain text/xml application/x-javascript application/x-httpd-php AddOutputFilter DEFLATE js css </IfModule> 复制代码
其中DeflateCompressionLevel
的意思是压缩等级,共分为1-9,9级为最高,不建议使用过高的压缩比,这样会对CPU产生太大的负担。浏览器
打开IIS管理工具,在右键网站打开网站属性,在服务选项卡中开启HTTP压缩,不建议选中压缩应用程序文件,但必定要选上压缩静态文件,否则就等于没有压缩,达不到负载均衡了。而后选中我那个站下面那个服务器扩展,新建一个服务器扩展,名字为GZIP,下面的添加文件路径为:c:\windows\system32\inetsrv\gzip.dll,而后启用这个扩展。DNSLA提醒你们,还没结束,第三步是,咱们要修改配置文件,在配置文件以前要中止IIS服务,(DNSLA提醒你们必定要先关闭IIS服务)打开C:\Windows\System32\inetsrv\MetaBase.xml,这个文件很大,找到下面一段信息:
<IIsCompressionScheme Location ="/LM/W3SVC/Filters/Compression/gzip" HcCompressionDll="%windir%\system32\inetsrv\gzip.dll" HcCreateFlags="1" HcDoDynamicCompression="TRUE" HcDoOnDemandCompression="TRUE" HcDoStaticCompression="TRUE" HcDynamicCompressionLevel="0" HcFileExtensions="htm html txt" HcOnDemandCompLevel="10" HcPriority="1" HcScriptFileExtensions="asp dll exe" > </IIsCompressionScheme> 复制代码
修改这个文件是要增长一些要进行压缩的文件后缀,其中 HcFileExtensions 是静态文件的扩展名,增长 js 和 css 等;HcScriptFileExtensions 为动态文件的扩展名,增长 aspx,HcDynamicCompressionLevel改为9,(0-10,6是性价比最高的一个)。
而后须要重启一下IIS服务便可。
相对apache 和 IIS nginx开启GZIP简单不少,只须要打开配置文件 nginx.conf找到gzip on 把前面的注释符号#去掉便可开启GZIP服务。而后配置GZIP便可。
下面是一个相对优化不错的配置,DNSLA建议使用。
Gzip on;
gzip_min_length 1024;
gzip_buffers 4 8k;
gzip_types text/plain application/x-javascript text/css application/xml;
复制代码