Nginx 和 Apache 设置 gzip 压缩
适合 gzip 压缩的情况
压缩的好处都知道,传输资源体积减小,传输时间成本降低,消耗的流量降低,一定程度上提升网站用户体验。
但不是所有情况下都适合开启 gzip 压缩的,比如前端的资源如 css,js 之类都被 webpack 打包过了,单个文件已经足够小的情况下,或者都是些压缩率较低的文件(图片、音频、视频、pdf等等)。
这些情况就不合适或者没有必要,因为开启 gzip 压缩本身也是要消耗服务器 cpu 资源的。
如果只是测试 gzip 压缩这一特性,那就无所谓了。
Nginx 设置 gzip 压缩
gzip on;
gzip_buffers 32 4K;
gzip_comp_level 6;
gzip_min_length 100;
gzip_types application/javascript text/css text/xml;
gzip_disable "MSIE [1-6]\.";
gzip_vary on;
放在 server 内,server_name 下面就好。
Apache 设置 gzip 压缩
首先要打开 mod_deflate.so
压缩扩展,编辑 httpd.conf
,去除注释符号 #
:
LoadModule deflate_module modules/mod_deflate.so
然后在 httpd.conf
末尾添加一下压缩模块设置(全局设置):
<IfModule deflate_module>
# 告诉 apache 对传输到浏览器的内容进行压缩
SetOutputFilter DEFLATE
# 压缩等级 9 最低是1,不建议按最大级别进行压缩,压缩率过高会占更多CPU资源
DeflateCompressionLevel 6
# 设置不对后缀gif,jpg,jpeg,png的图片文件进行压缩
SetEnvIfNoCase Request_URI .(?:gif|jpe?g|png)$ no-gzip dont-vary
# 压缩类型 html、xml、php、css、js 面的文件MIME类型可以根据自己情况添加
AddOutputFilterByType DEFLATE text/html text/plain text/xml application/x-javascript application/x-httpd-php
AddOutputFilter DEFLATE js css
</IfModule>
测试过,linux 下 Apache 2.2.27 下,将配置放在 httpd.conf(Apache 配置文件)末尾,gzip 生效;放在项目目录下的 .htaccess 中,直接报错 500 Internal Server Error
。
本地 win7 XAMPP Apache 2.4.38 下,将配置放在 httpd.conf(Apache 配置文件)末尾,Apache 重启会失败,在只保留 SetOutputFilter DEFLATE
和 DeflateCompressionLevel 6
的情况下可以正常启动。将其放到 <VirtualHost *:80>
中也是如此。而线上版本的 xampp 可以正常启动,知道原因的欢迎留言指导。
本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。