数据从服务器传输到客户端,需要传输时间,文件越大传输时间就越长,为了减少传输时间,我们一般把数据压缩后在传给客户端。

apache支持两种压缩:

  • deflate
  • gzip

使用mod_deflate实现数据压缩

1)开启模块

LoadModule deflate_module modules/mod_deflate.so

2)调用模块

# 启用压缩
SetOutputFilter DEFLATE

# 压缩等级 4 1-9,数字越大压缩的越好,也越占用CPU时间
DeflateCompressionLevel 4

# 压缩类型 html、xml、php、css、js
AddOutputFilterByType DEFLATE text/html text/plain text/xml application/x-javascript application/x-httpd-php

AddOutputFilter DEFLATE js css

# 设置对应的最小文件大小进行压缩(可选) apache2.4下不存在这个变量
#DeflateMinFileSize 1024

#浏览器匹配 IE1-6的不压缩
BrowserMatch \bMSIE\s[1-6] dont-vary

#设置不压缩的文件,注意图片本身就是压缩过的,所以不需要再压缩
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 指令

根据 MIME 类型添加输出过滤器,指定了哪些类型的文件需要使用指定的过滤器进行处理。例如,对于特定类型的文件,比如文本文件或特定的脚本文件,你可以使用 AddOutputFilterByType 指定对应的过滤器。

AddOutputFilter 指令

通常用于按照文件后缀名来添加输出过滤器。它允许你指定带有特定文件后缀的文件将会被哪些过滤器处理。

MIME 类型说明

  • text/html(HTML)
  • text/plain(纯文本)
  • text/xml(XML)
  • application/x-javascript(JavaScript)
  • application/x-httpd-php(PHP脚本)

最佳实践和优化建议

  1. 仅压缩文本文件
    • 避免对已经压缩过的文件进行再次压缩,例如图片、音频和视频文件。设置合适的MIME类型来仅压缩文本类型文件。
  2. 压缩级别选择
    • 选择合适的压缩级别。一般来说,级别 6 到 9 之间能够提供很好的压缩效果。较高级别会消耗更多的CPU资源。
  3. 限制压缩文件大小
    • 对于非常小的文件,压缩可能不会带来明显的性能提升。设置一个合适的最小文件大小来避免对小文件进行压缩。
  4. 监控和调整
    • 监控服务器性能,并根据实际情况调整压缩配置。观察CPU使用率和响应时间,确保压缩不会造成服务器负担过重。

测试效果

启用压缩再次通过浏览器访问该页面,通过开发者工具查看页面大小,如果明显变小了则说明压缩成功。也可以从响应头中看出多了压缩字段。

作者 admin

百度广告效果展示