node.js koa2 如何使用gzip
2021/6/29 11:24:19
本文主要是介绍node.js koa2 如何使用gzip,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
文章原文:https://www.cnblogs.com/yalong/p/14948533.html
背景:
项目中打包后的代码,体积过大,导致加载的时候很慢,特别影响用户体验,所以要对此优化,开启gzip压缩无疑是关键的一点
使用gzip的前提
web服务器和客户端(浏览器)必须共同支持gzip。
即请求头的Accept-Language
包含 gzip
, 返回头的Conten-Encoding
也包含 gzip
目前主流的浏览器,Chrome,firefox,IE等都支持该协议。常见的服务器如Apache,Nginx,IIS等同样支持gzip。
Koa2开启gizp压缩
首先安装 npm install koa-compress -S
然后在koa2中配置:
const koa = require('koa'); const compress = require('koa-compress'); const app = koa(); const options = { threshold: 2048 }; app.use(compress(options));
但是这种方式,是node直接对源文件进行gzip压缩,虽然给客户端返回的是压缩后的资源,但是如果压缩的文件比较大的话,压缩的这个过程耗时是比较久的,可能会导致用户体验还不如不开启gzip压缩好。
webpack开启gzip压缩
由于现在大部分项目是基于webpack的, webapck本身是支持对静态资源进行gzip压缩的, 所以可以把这个耗时的工作交给webpack
webpack配置开启gzip压缩
代码如下:(具体参数含义可自行百度)
const CompressionWebpackPlugin = require('compression-webpack-plugin'); webpackConfig.plugins.push( new CompressionWebpackPlugin({ asset: '[path].gz[query]', algorithm: 'gzip', test: new RegExp('\\.(js|css)$'), threshold: 10240, minRatio: 0.8 }) )
如下图可以看到,打包后的文件下面,生成了同名的.gz 文件,文件体积明显减少了,前端同学只需要把这些文件一起上传到服务器即可
koa2如何把.gz 文件返回给前端?
如果使用node原生的话,需要判断服务器上是否有.gz
文件,还要设置
Content-Encoding
为 gzip
比较好的是,koa的 koa-static
默认自带对gzip
文件的检测,基本原理就是对请求先检测.gz
后缀的文件是否存在,再去根据结果返回不同的内容
而且如果koa做服务器端的话,koa-static
又是必须的,所以就不用做额外的配置了
koa-static
的配置示例如下:
app.use(require('koa-static')(path.join(__dirname, '..', 'dist')));
如下图,打开浏览器的NetWork可以看到,请求的Accept-Language
包含 gzip
, 返回头的Conten-Encoding
是gzip
, 这样就通了,网站打开速度明显提升了
这篇关于node.js koa2 如何使用gzip的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-24Vue CLI多环境配置学习:从入门到实践
- 2024-11-24Vue CLI多环境配置学习:新手入门教程
- 2024-11-24Vue CLI学习:初学者指南
- 2024-11-24Vue CLI学习:从入门到上手的简单教程
- 2024-11-24Vue3+Vite学习:从零开始的前端开发之旅
- 2024-11-24Vue3阿里系UI组件学习入门教程
- 2024-11-24Vue3的阿里系UI组件学习入门指南
- 2024-11-24Vue3公共组件学习:新手入门教程
- 2024-11-24Vue3公共组件学习入门指南
- 2024-11-24vue3核心功能响应式变量学习