Gzip压缩测试(自用)

4 阅读2分钟

gzip 是一种常用的性能优化手段,通过压缩代码加速资源访问速度。

工具:

vue3 + vite demo代码 + nginx (暂时关闭内存缓存 F12->network页面配置 )

测试:

1.不开启gzip压缩。

F12;

image.png

结果:

标题大小耗时
css文件171kb500ms左右
js文件341kb700ms左右
2.开启gzip压缩,先开启服务端动态压缩。

配置:

http {
    include       mime.types;
    default_type  application/octet-stream;

    # 开启 gzip
    gzip on; # 开启动态压缩
    gzip_min_length 1k; # 大于1k压缩(测试)
    gzip_comp_level 6; # 压缩等级
    gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript image/svg+xml; # 压缩的资源类型
    gzip_vary on; # 让代理服务器知道响应是经过压缩的
    gzip_disable "msie6"; #禁用对ie6的支持

    # 你的 server 配置...
    server {
        listen       8080;
        server_name  localhost;
        root   资源路径;
        index  index.html;

        location / {
            try_files $uri $uri/ /index.html;
        }
    }
}

F12;

image.png

结果:

标题大小耗时
css文件44kb300ms左右
js文件47.6kb300ms左右

与未进行压缩的资源相比无论是资源大小和响应时间大大提升。

3.本地使用vite or webpack进行gzip压缩。(这里只演示vite压缩,webpack自行测试)

配置:

# 安装插件
npm install vite-plugin-compression --save-dev

vite.config.js 配置
import viteCompression from 'vite-plugin-compression'
...
  plugins: [
    viteCompression({
      verbose: true,           // 控制台输出压缩结果
      disable: false,          // 是否禁用
      threshold: 1024,        // 只压缩大于1kb的文件(测试)
      algorithm: 'gzip',       // 压缩算法
      ext: '.gz',              // 生成的压缩包后缀
      deleteOriginFile: false  // 是否删除源文件
    }),
  ]
...

nginx配置: gzip_static on; #可直接预压缩资源

vite开启gzip压缩

image.png

本地打包后就会生成对应的gz文件, 再nginx中我们开启了gzip_static配置,nginx就会优先找gz文件,不需要动态压缩了。

F12;

image.png

结果:

标题大小耗时
css文件44kb300ms左右
js文件47.6kb300ms左右

与未进行压缩的资源相比无论是资源大小和响应时间大大提升。

总结:

一般生成环境中可以同时开启动态和静态压缩,当没有与压缩文件时,也可通过动态压缩实现。 和浏览器解压资源速度相比,资源的大小更能影响页面显示。

补充:

现在大部分浏览器都支持br压缩,他是一种比gzip压缩率更强的算法,基本用法和gzip差不多,都需要再代理服务器中手动开启,因为我是再window环境下安装的nginx(暂时没有支持br的模块 (wind))有时间再学习。