vue-cli + nginx项目开启gzip压缩
gzip 简介
gzip 是 Web 世界最广泛的文件压缩算法,已经得到了绝大多数的服务端和客户端软件(例如我们使用的浏览器)的支持。gzip 最为擅长的是压缩纯文本文件,其效果非常明显,大约可以减少70%以上的文件大小,所以 Web 项目中开启 gzip 十分必要。
压缩前后的文件大小
nginx 中开启 gzip 的两种方式
1. 在 nginx 中实时用 gzip 压缩文件输出;
利用 nginx 中的模块
ngx_http_gzip_module,
消耗 CPU 来做压缩,nginx配置如下:
http{
gzip on;
gzip_min_length 1k;
4 16k;
gzip_comp_level 8;
text/plain application/javascript application/x-javascript text/css application/xml text/javascript;
gzip_vary on;
"MSIE [1-6]\.";
}
2. 事先用 gzip 压缩好文件(.gz)让 nginx 根据请求来自己选择 .gz 文件输出;
利用 nginx 中的模块
http_gzip_static_module,
不消耗 CPU 资源,nginx配置只需要在上述里面加入一行即可,如下:
gzip_static on;
注意:
nginx 中的模块
http_gzip_static_module
默认是不在的,官网解释如下:
This module is not built by default, it should be enabled with the--with-http_gzip_static_moduleconfiguration parameter.
所以我们要记得在 nginx 中添加上
http_gzip_static_module 模块
(https://www.cnblogs.com/caicaizi/p/10241700.html)
此种方式是推荐的办法,但是这样我们就需要事先去准备压缩好后的 gzip 文件了,在 vue-cli项目中。
如何在vue-cli 项目中打包生成 gzip 压缩文件?
vue-cli 是我们快速创建 vue 项目最好用的助手,但是目前里面没有提供打包时候生成 .gz 压缩文件。
办法其实很简单,如下:
先用 npm 安装 webpack 插件
compression-webpack-plugin, 然后在 Vue-cli 配置文件 vue.config.js 里面加入代码如下:
const CompressionPlugin = require('compression-webpack-plugin')
configureWebpack: config => {
if (process.env.NODE_ENV === 'production') {
return {
plugins: [
new CompressionPlugin({
algorithm: 'gzip',
test: /\.(js|css)$/,// 匹配文件名
threshold: 10240, // 对超过10k的数据压缩
deleteOriginalAssets: false, // 不删除源文件
minRatio: 0.8 // 压缩比
})
]
}
}
}
以上操作后即可大功告成,在网站被访问的时候,可以让nginx默认返回已经压缩好的 gzip 文件。