静态资源gzip优化
前言
vue
单页面应用打包后的资源比较大,耗时较长,特别是鄙人的 vps
还不是特别快,为了提升访问体验, 优化就是需要克服的第一座大山.
介绍
资源压缩方式主要有俩种:静态压缩和动态压缩
静态压缩:资源在本地压缩好后传到服务器
动态压缩: 服务器在接收到请求时动态压缩请求的资源 前者比较友好,后者需要消耗更多
cpu
资源
开始
# 首先通过nginx -V查看是否安装http_gzip_static_module
nginx -V
# 若无,则须在编译时加上
./configure --with-http_gzip_static_module
资源静态压缩
一般有俩种方式, compression-webpack-plugin
插件压缩和自定义shell脚本压缩 推荐用自写脚本压缩,自己动手,丰衣足食.
使用
compression-webpack-plugin
插件压缩// 安装依赖 npm install compression-webpack-plugin --save-dev // vue.config.js修改 const CompressionPlugin = require('compression-webpack-plugin') const productionGzipExtensions = /\.(js|css|json|txt|html|ico|svg)(\?.*)?$/i module.exports = { publicPath: './', productionSourceMap: false, configureWebpack: {...}, chainWebpack: config => { config.resolve.alias.set('@', resolve('src')) if (process.env.NODE_ENV === 'production') { config.plugin('compressionPlugin') .use(new CompressionPlugin({ filename: '[path].gz[query]', algorithm: 'gzip', test: productionGzipExtensions, threshold: 10240, minRatio: 0.8, deleteOriginalAssets: true })) } }, }
使用自定义
shell
脚本压缩: 这里贴上自用脚本# 在windows上给gzip加-c参数有问题,否则一行代码就够了.没办法,只能先拷贝一份在压缩 cd ./dist/build/h5/static/js mkdir oldjs cp ./*.js oldjs/ gzip -9 ./*.js cd oldjs/ cd ../ mv ./oldjs/*.js ./ rm -fr ./oldjs/
服务器动态压缩
服务端 nginx
启用 gzip
压缩原理:
浏览器支持
gzip
,继续执行,否则直接返回未压缩的js
和css
优先启用
gzip
静态压缩:有gzip
文件直接使用,否则继续执行gzip
动态压缩# nginx配置gzip # 注意:gzip_static on;需要放置在最前 gzip_static on; gzip on; gzip_min_length 1k; gzip_buffers 4 16k; gzip_http_version 1.1; gzip_comp_level 2; gzip_types text/plain application/javascript application/x-javascript text/javascript text/css text/html application/xml; gzip_vary on; gzip_proxied expired no-cache no-store private auth; gzip_disable "MSIE [1-6]\.";
参考
Last updated
Was this helpful?