提升网站性能:Nginx 启用 Gzip 压缩、缓存控制与 HTTP/2 配置教程

阅读:11 2025-07-22

本文来自「码农资讯网」,专注 DevOps、PHP、数据库、系统运维干货。访问:www.codesou.cn,学习更多实战技巧。


一、为什么要优化静态资源传输?

网站打开慢、用户跳出率高,常见原因包括:

  • HTML/CSS/JS/图片未压缩,体积大

  • 浏览器缓存未启用,重复加载资源

  • 未启用 HTTP/2,无法并发加载请求

解决方案:

  • ✅ Gzip 压缩 —— 减少资源体积

  • ✅ 缓存控制 —— 提升浏览器缓存命中率

  • ✅ 启用 HTTP/2 —— 提升并发传输效率


二、开启 Gzip 压缩

Gzip 是一种常见的网页压缩格式,支持几乎所有浏览器。

配置步骤:

打开你的 nginx.conf 或具体站点配置文件,在 httpserver 段中添加:

nginx复制编辑gzip on;gzip_comp_level 6;gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;gzip_min_length 1024;gzip_vary on;gzip_disable "msie6";

参数说明:

  • gzip on; 开启 Gzip

  • gzip_comp_level 压缩等级(1~9,越高越占 CPU)

  • gzip_types 指定压缩的 MIME 类型

  • gzip_min_length 最小压缩字节数,默认 20

  • gzip_vary 配合缓存代理使用

📌 建议:只压缩文本内容,不压缩图片视频类二进制资源


三、浏览器缓存控制(Cache-Control)

避免每次都请求服务器,减少带宽浪费。

配置方式一:统一设置所有静态资源缓存策略

gzip on;
gzip_comp_level 6;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
gzip_min_length 1024;
gzip_vary on;
gzip_disable "msie6";

配置方式二:按类型设置过期时间

location ~* \.(jpg|jpeg|png|gif|ico|css|js|woff|woff2|ttf|svg)$ {
    expires 30d;
    add_header Cache-Control "public";
}

🚨 注意:静态资源名若固定,强缓存更新困难;推荐使用 带版本号文件名(如 main.v3.js


四、启用 HTTP/2

前提要求:

  • 必须使用 HTTPS(HTTP/2 只支持加密连接)

  • 使用 Nginx 版本 ≥ 1.9.5(建议 1.17+)

修改配置:

server {
    listen 443 ssl http2;
    server_name www.codesou.cn;

    ssl_certificate /etc/letsencrypt/live/www.codesou.cn/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/www.codesou.cn/privkey.pem;

    ...
}

只需在 listen 443 ssl 后添加 http2 即可。


五、实战案例配置片段

server {
    listen 443 ssl http2;
    server_name www.codesou.cn;

    root /www/wwwroot/codesou;
    index index.html index.php;

    # SSL配置略...

    # 启用 Gzip 压缩
    gzip on;
    gzip_types text/plain application/javascript text/css application/json;
    gzip_min_length 1024;
    gzip_comp_level 6;

    # 浏览器缓存
    location ~* \.(js|css|png|jpg|jpeg|gif|ico|woff|woff2|ttf|svg)$ {
        expires 30d;
        add_header Cache-Control "public";
    }
}

六、如何验证效果?

工具用途
GTMetrix检测压缩、缓存、HTTP2
Chrome DevTools > Network查看资源大小、缓存命中
curl -I --http2 https://xxx.com验证是否启用 HTTP/2

七、总结建议

✅ 启用 Gzip:压缩文本资源
✅ 配置缓存策略:减少重复请求
✅ 启用 HTTP/2:提高并发加载效率
✅ 持续优化:结合 CDN 使用效果更佳


声明

1、部分文章来源于网络,仅作为参考。
2、如果网站中图片和文字侵犯了您的版权,请联系1943759704@qq.com处理!