Node.js服务器启用Gzip压缩
Gzip是什么
复制大神们的解释吧:
GZIP
最早由Jean-loup Gailly
和Mark Adler
创建,用于UNIX
系统的文件压缩。我们在Linux中经常会用到后缀为.gz
的文件,它们就是GZIP
格式的。现今已经成为Internet
上使用非常普遍的一种数据压缩格式,或者说一种文件格式。HTTP
协议上的GZIP
编码是一种用来改进WEB应用程序
性能的技术。大流量的WEB
站点常常使用GZIP
压缩技术来让用户感受更快的速度。这一般是指WWW
服务器中安装的一个功能,当有人来访问这个服务器中的网站时,服务器中的这个功能就将网页内容压缩后传输到来访的电脑浏览器中显示出来.一般对纯文本内容可压缩到原大小的40%
.这样传输就快了,效果就是你点击网址后会很快的显示出来.当然这也会增加服务器的负载. 一般服务器中都安装有这个功能模块的.
Gzip压缩率
举个例子,通过webpack
打包后的js文件比较大,虽然我们可以利用chunk
功能将文件分开混淆打包,但是总体积还是不小;这时候看看利用gzip压缩的效果:
![](http://upload-images.jianshu.io/upload_images/3169607-30445e7a3583b8e9.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/590)
![](http://upload-images.jianshu.io/upload_images/3169607-ad6532188d97542f.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/605)
对比其中三个文件前后压缩大小:
文本类文件:
- iview.min.js:
429kb
->109kb
,压缩比74.6%
- base.min.js:
309kb
->81.7kb
,压缩比73.56%
- style.min.css:
207kb
->30.9kb
,压缩比85%
图片:
- 图片1:
63.2kb
->63.2kb
,压缩比0%
?
我们看到文本类文件的压缩效果非常显著,但是图片体积没变。看一下文本类的http响应头
是有gzip压缩过:
![](http://upload-images.jianshu.io/upload_images/3169607-02da52032cfff0a9.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/419)
而图片的没有:
![](http://upload-images.jianshu.io/upload_images/3169607-51227e50ac5f3624.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/441)
这是因为一般对于图片(png,jpg等)使用gzip
的效果不好甚至恰得其反,所以一般都默认对图片不进行gzip
压缩。
node.js启用gzip
下面说一下node的express
框架如何使用gzip:
1.安装一个compression
依赖:
npm install compression
2.调用:
var compression = require('compression')
var app = express();//尽量在其他中间件前使用compression
app.use(compression());
基本的使用就是这样就ok了,另外如果想只对某些请求使用此功能,可以使用它的过滤方法:
app.use(compression({filter: shouldCompress}))function shouldCompress (req, res) {if (req.headers['x-no-compression']) {// 这里就过滤掉了请求头包含'x-no-compression'return false}return compression.filter(req, res)
}
其他的功能请参考compression
的文档。
另外附上nginx的配置
#on为启用,off为关闭
gzip on;#设置允许压缩的页面最小字节数,页面字节数从header头中的Content-Length中进行获取。默认值是0,不管页面多大都压缩。建议设置成大于1k的字节数,小于1k可能会越压越大。
gzip_min_length 1k;#获取多少内存用于缓存压缩结果,‘4 16k’表示以16k*4为单位获得
gzip_buffers 4 16k;#gzip压缩比(1~9),越小压缩效果越差,但是越大处理越慢,所以一般取中间值
gzip_comp_level 5;#对特定的MIME类型生效,其中'text/html’被系统强制启用
gzip_types text/plain application/x-javascript text/css application/xml text/javascript application/x-httpd-php;
感谢阅读!
作者:doterlin链接:https://www.jianshu.com/p/1c9909f9b0e9來源:简书著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
Node.js服务器启用Gzip压缩相关推荐
- 启用Gzip压缩(IIS)提高客户端网站访问速度
IIS上启用Gzip压缩(HTTP压缩) 详解 一.摘要 本文总结了如何为使用IIS托管的网站启用Gzip压缩, 从而减少网页网络传输大小, 提高用户显示页面的速度. 二.前言. 本文的知识点是从互联 ...
- 网站启用GZip压缩后,速度快了3倍!
GZip压缩,是一种网站速度优化技术,也是一把SEO优化利器,许多网站都采用了这种技术,以达到提升网页打开速度.缩短网页打开时间的目的. 本文是一篇研究性文章,将通过某个案例来给大家显示网站采用GZi ...
- 在IIS上启用Gzip压缩 (HTTP压缩)方法
本文总结了如何为使用IIS托管的网站启用Gzip压缩, 从而减少网页网络传输大小, 提高用户显示页面的速度. 一.摘要 本文总结了如何为使用IIS托管的网站启用Gzip压缩, 从而减少网页网络传输大小 ...
- node.js开源文件服务器,本地node.js服务器搭建
本地node.js服务器搭建并通过浏览器访问服务器 1 2 3 github下载express https://github.com/expressjs/express 1.首先 检查是否安装了nod ...
- Tomcat启用GZIP压缩,提升web性能
一.前言 最近做了个项目,遇到这么一个问题:服务器返回给客户端的json数据量太大(大概65M),在客户端加载了1分多钟才渲染完毕(当然这加载时间也和本地的下行带宽有关),费时耗流量,用户体验极其不好 ...
- node服务器放vue项目,本地Vue项目跨域请求本地Node.js服务器的配置方法
前言:跨域请求是在本地开发时经常遇到的需求,也很简单,只是几句代码配置一下的问题.我初次配置跨域请求时由于官方的说明太简洁,找到的教程又落伍,调试了一番并没有解决问题,到最后解决问题,已花费了很多时间 ...
- node redis集群_如何使用集群扩展Node.js服务器
node redis集群 by Michele Riva 由Michele Riva 如何使用集群扩展Node.js服务器 (How to scale your Node.js server usin ...
- 更改web.config,让godady的win主机启用gzip压缩
阅读本文首先确定你正在使用或者准备使用godaddy的windows虚拟主机,当然也会适合别的windows主机,同时,请确定你的虚拟主机的iis模式是7而不是6,因为godaddy同时还支持iis6 ...
- node.js服务器代理
一.node.js服务器代理 1.使用nodejs实现代理,解决前端浏览器的同源策略导致的跨域问题 2.跨域只存在于浏览器端,服务器端是不存在同源策略 3.利用第三方模块http-proxy-midd ...
最新文章
- WIFI 一键配置原理-ESP8266
- python对城市规划_Python对城市距离自动化爬取【必学小型项目】
- linux吉祥物的名字,知道Linux的吉祥物的名字和性别吗
- python17个常见问题_Python 常见的17个错误分析
- linux c++ 输出到终端,如何将彩色文本输出到Linux终端?
- Java快逸报表展现demo_快逸报表操作积累.docx
- 基于java+springboot+mybatis+laiyu实现学科竞赛管理系统《建议收藏》
- Cameralink视频数据信号
- Java第十一章总结 枚举与泛型
- 元数据管理与数据质量保障
- 秃顶程序员跑马拉松历程
- 手持PDA操作系统有哪些?哪个系统好?
- RTOS内功修炼记(二)—— 优先级抢占调度到底是怎么回事?
- 原创 | 机器学习数学推导与代码实现30讲.pdf
- 自制F1C200S demo板(六、裸机寄存器点灯)
- 分享5个常用的CMD命令。
- HanLP 自然语言处理 for nodejs 1
- OpenCV打开相机,调整窗口大小位置
- Could not find artifact com.exer:manager:jar:1.0-SNAPSHOT
- 【干货】使用EnCase来分析windows 7文件系统------认识元数据记录$MFT,数据恢复
热门文章
- OpenCV3.3中支持向量机(Support Vector Machines, SVM)实现简介及使用
- C++/C++11中头文件iterator的使用
- C++11中auto的使用
- FFmpeg简介及在vc2010下编译步骤
- 【VritualBox】虚拟机VirtualBox中ubuntu下加载USB设备报错:busy with a previous request.Plaease try again later
- Linux中bashrc河bash_profile
- 学计算机应用好还是汽车维修好,大学汽车运用与维修专业怎么样_学什么_前景好吗-520吉他网...
- apn java_android设置移动联通电信wap接入点
- 怎么在PHP植入音乐,PHP网站插入音乐
- svd奇异值分解_SVD(奇异值分解)到底在干什么