1、nginx开启gzip模式
server {listen 8103;server_name ***;# 开启gzipgzip on;# 进行压缩的文件类型gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/png image/gif;# 是否在http header中添加Vary: Accept-Encofing,建议开启gzip_vary on;}
...http {...gzip on;gzip_min_length 1k;gzip_buffers 4 16k;#gzip_http_version 1.1;gzip_comp_level 2; # 压缩级别# 要压缩的mine类型gzip_types text/plain application/javascript application/x-javascript text/javascript text/css application/xml application/xml+rss image/jpeg image/gif image/png image/svg+xml;gzip_vary off;gzip_proxied expired no-cache no-store private auth;#IE6不支持gzipgzip_disable "MSIE [1-6]\.";...}
2、Vue开启gzip
2.1 安装依赖
compression-webpack-plugin - npm
https://www.npmjs.com/package/compression-webpack-plugin
npm install compression-webpack-plugin@6.1.1 --save-devnpm install compression-webpack-plugin --save-devyarn add -D compression-webpack-pluginpnpm add -D compression-webpack-plugin
2.2 配置gzip
config —> index.js
build: {productionGzip: true,productionGzipExtensions: ['js', 'css']}
webpack.config.js
const CompressionPlugin = require("compression-webpack-plugin");module.exports = {plugins: [new CompressionPlugin()],};
最终优化后的效果如下图:vendor.js文件从1M以上优化到256K左右,体积减少接近80%,排除服务器影响的因素,界面渲染速度基本都在1s左右,达到秒开效果,比之前快
了太多,体验一下就上来了嘻嘻。
开启 br 压缩
当前 br 压缩是在 nginx 服务器进行且并未缓存资源,因此每次请求都需要对资源进行压缩之后发出,考虑服务器性能,压缩级别设置为 6。
现在改为客户端压缩,服务器在接收请求时直接把压缩文件发出,减少服务器压力。同时客户端压缩可以把压缩级别调整至最高的 11,整体资源大小会再次下降,使用 compression-webpack-plugin 实现。
yarn add zlib -D
const CompressionWebpackPlugin = require('compression-webpack-plugin');const zlib = require('zlib');if (!isDev) {plugins.push(new CompressionWebpackPlugin({filename: '[path].br[query]',algorithm: 'brotliCompress',test: /\.js$|\.css$|\.html$/,//test: /.(js|css|json|txt|html|ico|svg)(?.*)?$/i,compressionOptions: {params: {[zlib.constants.BROTLI_PARAM_QUALITY]: 11,},},threshold: 1024,minRatio: 0.99,//删除原始文件只保留压缩后的文件deleteOriginalAssets: false,}),);}

br压缩后更小

