这段时间在忙于微商城项目,在我负责的商城结算模块用到了微信公众号支付,所以便把过程中的一些实践和问题整理了下来!
1.微信支付环境准备
当然,这里的支付准备默认前提是你已经申请了微信公众平台等相关信息。
a.确保微信支付功能开通,可以前往对应的公众号平台查看;
b.在公众号的微信支付页面设置支付授权目录;
c.前往对应的商户平台设置支付密钥和授权目录,并下载相应的证书文件;
相信很多做过前端或者后台性能优化的童鞋对http缓存机制都有过了解,今天准备复习下这部分的知识。
首先开篇有两个问题抛出,即是,1.什么时候客户端需要使用缓存?2.使用缓存的规则是什么?
第一个问题,客户端请求一个文件,服务器返回的响应头会有两种方式可以判断,首先是cache-control属性值,它除了no-store之外,浏览器都会缓存文件数据,供下次使用。
如标题所示,这次笔记一个工作中遇到的小坑,虽说小却楞是花了我几大小时的时间。当时的背景是这样的,我需要在客户端这边发送一个http的POST请求,然后服务器根据请求执行相应的db操作。代码类似下面这样子:
1 | var http = require('http'); |
结果代码执行过后,对方的服务器给挂掉了,当然我这边也就没有响应到正确的数据,服务器报出了语法的错,类似‘无法解析的结尾’。当时我就在想,这部分的请求代码是我直接拷过来的(话说直接拷代码是非常‘危险’的动作),拷的这部分代码在之前是成功执行的,只是我这边稍微改了一下,难不成是因为这次改动的原因,然后我回滚代码,让它几乎保持了与拷贝之前一致性,接着再执行,晕~依然崩溃。仔细对比了代码,发现剩下不同的就只有新的代码里面消息体包含了中文。于是换成英文再执行,OK。那依这样看是不是就是该服务端的问题呢,即对方在接收数据时没有做正确的处理,或者没有做中文编码之类的处理。于是,我把这个问题反馈给了作者,这篇的6楼是我的反馈记录。大家可以看看。
那从上面的链接我们可以牢记一个点是,在请求的头部,content-length它表示的是所在消息体的字节数而不是字符个数,明白这个道理的话就释然了
最近项目上线,准备上pm2,一个带有负载均衡功能的Node应用的进程管理器。抛弃forever了,哈哈。
主要特性:
下面是有用的命令:
npm install pm2 -g # 命令行安装 pm2
pm2 start app.js -i 4 #后台运行pm2,启动4个app.js
pm2 start app.js –name my-api # 命名进程
pm2 list # 显示所有进程状态
pm2 show 0 # 显示某个id的进程状态
pm2 monit # 监视所有进程
pm2 logs # 显示所有进程日志
pm2 stop all # 停止所有进程
pm2 restart all # 重启所有进程
pm2 reload all # 0秒停机重载进程 (用于 NETWORKED 进程)
pm2 stop 0 # 停止指定的进程
pm2 restart 0 # 重启指定的进程
pm2 startup # 产生 init 脚本 保持进程活着
pm2 web # 运行健壮的 computer API endpoint
pm2 delete 0 # 杀死指定的进程
pm2 delete all # 杀死全部进程
运行进程的不同方式: