本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名原文链接~~~

Apache/httpd(11)之启用响应压缩功能

微信搜索 zze_coding 或扫描 👉 二维码关注我的微信公众号获取更多资源推送:


在 httpd 中提供了一个 mod_deflate 模块,该模块能够在 httpd 服务器响应时对我们设定的特定类型的资源进行压缩。
使用场景:

  1. 节约带宽,额外消耗CPU,同时,可能有些较老浏览器不支持;
  2. 压缩适于压缩的资源,例如文件文件;

查看 /etc/httpd/conf/httpd.conf 文件可以看到该模块默认就已被启用:

$ cat /etc/httpd/conf/httpd.conf | grep deflate
LoadModule deflate_module modules/mod_deflate.so

除此以外还需在该配置文件中加入以下配置,各配置项描述在注释中:

# 使用 DEFLATE 作为输出过滤器
SetOutputFilter DEFLATE 

# mod_deflate configuration

# 设定过滤资源的 MIME 类型
# Restrict compression to these MIME types
AddOutputFilterByType DEFLATE text/plain 
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/x-javascript
AddOutputFilterByType DEFLATE text/javascript
AddOutputFilterByType DEFLATE text/css

# 指定压缩级别
# Level of compression (Highest 9 - Lowest 1)
DeflateCompressionLevel 9
 
# 对匹配到的浏览器类型定制压缩规则

# 仅对 text/html 压缩
# Netscape 4.x has some problems.
BrowserMatch ^Mozilla/4  gzip-only-text/html
 
# 不使用 gzip 压缩
# Netscape 4.06-4.08 have some more problems
BrowserMatch  ^Mozilla/4\.0[678]  no-gzip

# 不使用 gzip 压缩,不使用 gzip 对 text/html 资源压缩
# MSIE masquerades as Netscape, but it is fine
BrowserMatch \bMSI[E]  !no-gzip !gzip-only-text/html

/etc/httpd/conf/httpd.conf 中添加完上述配置后重启或重新加载服务,随便访问一个资源:

$ curl -I 10.0.1.201/test/hello.html
HTTP/1.1 200 OK
Date: Thu, 02 Jan 2020 10:01:55 GMT
Server: Apache/2.2.15 (CentOS)
Last-Modified: Thu, 02 Jan 2020 09:44:46 GMT
ETag: "620f2-4ce8-59b250b20031a"
Accept-Ranges: bytes
Content-Length: 19688
Vary: Accept-Encoding
Connection: close
Content-Type: text/html; charset=UTF-8

可以看到未使用压缩时响应长度为 19688
再使用 curl 设定允许压缩的情况看下:

$ curl -I --compressed 10.0.1.201/test/hello.html
HTTP/1.1 200 OK
Date: Thu, 02 Jan 2020 10:03:21 GMT
Server: Apache/2.2.15 (CentOS)
Last-Modified: Thu, 02 Jan 2020 09:44:46 GMT
ETag: "620f2-4ce8-59b250b20031a"
Accept-Ranges: bytes
Vary: Accept-Encoding
Content-Encoding: gzip
Content-Length: 6412
Connection: close
Content-Type: text/html; charset=UTF-8

可以看到压缩后的长度为 6412,几乎是文件原长度的三分之一。

# Apache/httpd  

如果这篇文章对您有帮助,可点击下方链接分享给你的朋友们😋,如果遇到问题欢迎评论、留言~~~😇

评论

公众号:zze_coding

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×