部署node api的二三事
当接到node开发node api的时候,我就想用docker来部署,众所周知,node的版本更新迭代很快。很多以前需要babel后才能采用的方法正在不断被node 原生的支持。如果随便更换生产服务器的node版本,可能对以前的服务产生一定程度的冲击。我想用docker就是想单纯固定住node版本。关于docker的基本用法,其实网上有很多,自己不想赘述,提供链接一篇,其中我的实现基本参照于此 https://segmentfault.com/a/1190000010541792。然而想法是好的,我兴冲冲的去创建dockerhub账号,将自己的镜像上传,等着运维pull的时候,他们说他们暂时不想采用docker,理由是为了统一,据理力争不得,只能按照普通方式来部署,不过我有自己的服务器,部署到自己的服务器简直迅速又完美。之前每次源码的改动我一般都是重新构建镜像,其实每次怎么做都是很繁琐,docker container run -v /usr/src/project:/app --name server- bind-directory -p 4000:3001 -it bind-directory:0.0.1,这里的 "-v /usr/src/project:/app" 就是把宿主机的 /usr/src/project 与容器目录 app 映射起来。这样当我们代码修改后,更新项目后,就不需要再构建 image 了,依赖修改也只需要在宿主机上直接安装即可,不用构建 image,部署方便了许多。
采用普通方式来部署,不过是执行入口文件,然后用pm2来守护这个进程,看起来还是蛮不错的。但是运行了一段时间,发现有的时候接口返回的数据好大,固定几秒如果接口的数据没有 content download 完毕,接口就会报错误,类似err_content_length_mismatch,解决方法代码层面 https://github.com/expressjs/express/issues/3392,在这期间我发现我对请求的每个时间点好像不是特别清楚,于是又发现好文章一篇 network http请求时间分析 https://www.cnblogs.com/zhenwen/p/5827925.html,其中ttfb(浏览器发送请求到服务器返回第一个字节所用的时间),还有其他的什么dns解析的时间和tcp三次握手的时间,不得不说chrome对于前端开发工程师真是太友好了。不过这些东西跟接口返回大数据的处理没有多大关系,主要原因是response 太大了,导致contentdownload时间过长。怎么才能减少接口返回的数据的大小呢,肯定是压缩,于是想到gzip.怎么才能用上gzip.我想到的是nginx,可能node存在类似的中间件来实现,但是即使存在,也不能比nginx来的成熟。
,


为了配置gzip接口采用的反向代理, 上图分别是虚拟主机和gzip的配置

可以看到response的server nginx , gzip已经开启,完美!
部署node api的二三事的更多相关文章
- 生产环境部署node记录(二):pm2和nginx
安装完node和npm ,接下来安装pm2 首先简单介绍下pm2,官网的介绍是: pm2 是一个带有负载均衡功能的Node应用的进程管理器.当你要把你的独立代码利用全部的服务器上的所有CPU,并保证进 ...
- 高德地图API开发二三事(一)如何判断点是否在折线上及引申思考
最近使用高德地图 JavaScript API 开发地图应用,提炼了不少心得,故写点博文,做个系列总结一下,希望能帮助到LBS开发同胞们. 项目客户端使用高德地图 JavaScript API,主要业 ...
- 在云平台上基于Go语言+Google图表API提供二维码生成应用
二维码能够说已经深深的融入了我们的生活其中.到处可见它的身影:但通常我们都是去扫二维码, 曾经我们分享给朋友一个网址直接把Url发过去,如今我们能够把自己的信息生成二维码再分享给他人. 这里就分享一下 ...
- 几种部署Goku API Gateway的方式,最快一分钟可使用上网关
本文将介绍几种部署Goku API Gateway的方式,最快一分钟可使用上为网关,详情请看全文. 什么是Goku API Gateway? Goku API Gateway (中文名:悟空 API ...
- 在Heroku上部署Node.js应用
最近在学习Node.js,想找一个可以免费部署Node的平台,于是便找到了Heroku 直接进入主题,接下来我们一步一步部署自己的Node应用. 步骤1: 注册一个免费的Heroku账号. 步骤2: ...
- NODE编程(二)--异步编程技术
在Node世界里流行两种响应逻辑管理方式,回调和事件监听. 回调通常用来定义一次性响应的逻辑.比如对于数据的查询,可以指定一个回调函数来确定如何处理查询结果. 事件监听器,本质上也是一个回调,不同的是 ...
- 部署Node.js项目(CentOS)
Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境,用来方便地搭建快速的易于扩展的网络应用.Node.js 使用了一个事件驱动.非阻塞式 I/O 的模型,使其轻量又 ...
- 如何线上部署node.js项目
来源:http://blog.csdn.net/chenlinIT/article/details/73343793 前言 最近工作不是很忙,在空闲时间学习用node+express搭建自己的个人博客 ...
- 使用 pm2 优雅的部署 node 程序
使用 pm2 优雅的部署 node 程序 # 启动并监控名字为 XXX 的 npm run start:dev 命令 pm2 start npm --watch --name XXX -- run s ...
随机推荐
- matlab练习程序(单源最短路径Dijkstra)
图的相关算法也算是自己的一个软肋了,当年没选修图论也是一大遗憾. 图像处理中,也有使用图论算法作为基础的相关算法,比如图割,这个算法就需要求最大流.最小割.所以熟悉一下图论算法对于图像处理还是很有帮助 ...
- 如何保护好我们的比特币(bitcoin)
转自:http://8btc.com/thread-819-1-1.html 随着比特币(BTC)的使用者越来越多:价格也很高(2013年,1比特币价格长期在100美元以上):同时比特币没有一个中央机 ...
- lLinux安装JDK
1.在Linux中新建文件夹 mkdir /usr/local/java 2.上传jdk-7u55-linux-i586.tar到Linux中 3.解压文件 tar xzvf jdk-7u55-l ...
- WinDbg:栈帧的含义
转自:http://www.cppblog.com/weiym/archive/2012/06/07/177958.html 栈从高地址向低地址生长, __stcall和__cdecl调用约定都是函数 ...
- tcp/ip 调优示例
# Kernel sysctl configuration file for Linux # # Version 1.12 - 2015-09-30 # Michiel Klaver - IT Pro ...
- 前端HTML5几种存储方式
h5之前,存储主要是用cookies.cookies缺点有在请求头上带着数据,大小是4k之内.主Domain污染. 主要应用:购物车.客户登录 对于IE浏览器有UserData,大小是64k,只有IE ...
- Android开发学习之TabView选项卡具体解释 -- 基于Android4.4
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/he90227/article/details/24474197 直接上代码 -- 基于Android ...
- Linux下安装jdk步骤
1.检查当前服务器中是否有安装jdkrpm -qa|grep java 2. 批量删除java rpm -qa | grep java | xargs rpm -e --nodeps 3. 安装jdk ...
- 关于eclipse中引入项目报错或者没有JRE System Library问题(jre报错)或者jre1.7(8)改为jre1.8(7)等问题
解决方法: 右键项目工程-->>properties->>java bulid path -->>>libraries -->>add libra ...
- ids for this class must be manually assigned before calling save():
Caused by: javax.persistence.PersistenceException: org.hibernate.id.IdentifierGenerationException: i ...