Skip to content

Gzip压缩

启用Gzip压缩可以减少传输数据量,提高网站性能。

基本配置

启用Gzip

nginx
gzip on;
gzip_vary on;
gzip_min_length 1000;
gzip_comp_level 6;
gzip_types text/plain text/css text/xml text/javascript application/json application/javascript application/xml+rss;

完整配置

生产环境配置

nginx
http {
    gzip on;
    gzip_vary on;
    gzip_min_length 1000;
    gzip_comp_level 6;
    gzip_types text/plain text/css text/xml text/javascript application/json application/javascript application/xml+rss image/svg+xml;
    gzip_disable "msie6";
}

参数说明

gzip

on

  • 启用Gzip压缩
  • 推荐启用

gzip_vary

on

  • 添加Vary头
  • 告诉代理服务器缓存压缩版本
  • 推荐启用

gzip_min_length

1000

  • 最小压缩文件大小
  • 小于该值不压缩
  • 推荐值:1000

gzip_comp_level

6

  • 压缩级别(1-9)
  • 级别越高压缩率越高,但CPU消耗越大
  • 推荐值:6

gzip_types

text/plain text/css text/xml text/javascript application/json application/javascript application/xml+rss

  • 压缩的MIME类型
  • 推荐压缩文本类型

gzip_disable

"msie6"

  • 禁用特定浏览器的压缩
  • IE6不支持Gzip
  • 推荐禁用IE6

完整示例

生产环境配置

nginx
http {
    # Gzip压缩
    gzip on;
    gzip_vary on;
    gzip_min_length 1000;
    gzip_comp_level 6;
    gzip_types text/plain text/css text/xml text/javascript application/json application/javascript application/xml+rss image/svg+xml;
    gzip_disable "msie6";

    # Gzip缓冲区
    gzip_buffers 16 8k;
    gzip_http_version 1.1;
    gzip_proxied any;
}

Gzip缓冲区

基本配置

nginx
gzip_buffers 16 8k;
gzip_http_version 1.1;
gzip_proxied any;

参数说明

gzip_buffers

  • Gzip缓冲区
  • 格式:数量 大小
  • 推荐值:16 8k

gzip_http_version

  • HTTP版本
  • 默认值:1.1
  • 推荐值:1.1

gzip_proxied

  • 代理请求的压缩策略
  • any:所有代理请求都压缩
  • 推荐值:any

完整示例

生产环境配置

nginx
http {
    # Gzip压缩
    gzip on;
    gzip_vary on;
    gzip_min_length 1000;
    gzip_comp_level 6;
    gzip_types text/plain text/css text/xml text/javascript application/json application/javascript application/xml+rss image/svg+xml;
    gzip_disable "msie6";

    # Gzip缓冲区
    gzip_buffers 16 8k;
    gzip_http_version 1.1;
    gzip_proxied any;

    # 客户端缓冲区
    client_body_buffer_size 128k;
    client_max_body_size 10m;
    client_header_buffer_size 1k;
    large_client_header_buffers 4 4k;

    # 代理缓冲区
    proxy_buffer_size 4k;
    proxy_buffers 8 4k;
    proxy_busy_buffers_size 8k;
    proxy_buffering on;
}

测试Gzip

使用curl测试

bash
curl -I -H "Accept-Encoding: gzip" http://example.com/

预期结果:

Content-Encoding: gzip

使用浏览器测试

  1. 打开浏览器开发者工具
  2. 查看Network标签
  3. 检查响应头是否包含Content-Encoding: gzip

常见问题

Gzip未生效

原因: gzip未启用或配置错误

解决: 检查gzip配置

nginx
gzip on;
gzip_types text/plain text/css text/xml text/javascript application/json application/javascript application/xml+rss;

压缩率低

原因: gzip_comp_level设置过低

解决: 提高压缩级别

nginx
gzip_comp_level 6;

总结

Gzip压缩的关键点:

  • gzip on:启用Gzip压缩
  • gzip_vary:添加Vary头
  • gzip_min_length:设置最小压缩文件大小
  • gzip_comp_level:设置压缩级别
  • gzip_types:设置压缩的MIME类型
  • gzip_disable:禁用特定浏览器的压缩

合理配置Gzip压缩,减少传输数据量,提高网站性能。