电子书:http://download.csdn.net/download/qfire/10232839
代码:https://github.com/EthanRBrown/web-development-with-node-and-express
第九章 Cookie与会话
cookie的名声不好,当服务器希望客户端保存一个cookie时,它会发送一个响应头Se-Cookie,其中包含名称/值对。当客户端向服务器发送含有cookie的请求时,它会发送多个请求头Cookie,其中包含这些cookie的值。
凭证的外化:为了保证cookie的安全,必须有一个cookie秘钥,一个字符串。外化第三方凭证是一种常见的做法,比如cookie秘钥、数据库密码和API令牌(Twiter, faceback等)。这不仅易于维护,还可以让你的版本控制系统忽略这些凭证文件。
因此我们准备将凭证外化在一个JavaScript文件中credentials.js:
Express中的Cookie:
$ npm install --save cookie-parser
会话:实际上只是更方便的状态维护方法。通常用一个包含唯一标识的cookie,然后服务器用这个标识获取相应的会话信息。H5中可以用本地存储。
基于cookie的会话,可查阅中间件cookie-session(https://www.npmjs.org/package/cookie-session)
如果你更愿意把会话信息存在服务器上,这也是我推荐的方式,入门级的选择是内存会话。
$ npm install --save express-session
使用req.session.xxx的属性
用会话实现即显消息:
第十章 中间件
从概念上讲,中间件是一种功能的封装方式,具体来说就是封装在程序中处理HTTP请求的功能。从实战上讲,中间件只是一个有3个参数的函数:一个请求对象、一个响应对象和一个next函数。在管道中执行。
常用中间件:
第三方中间件:
第十一章 发送邮件
推荐Nodemailer模块。
将邮件作为网站监测工具:
第十二章 与生产相关的问题
$ export NODE_ENV=production node meadowlark.js
添加一些日志,在开发环境中,会用Morgan,它的输出是便于查看的彩色文本。在生产环境中,会用express-logger,它支持日志循环(每个24小时复制,然后开始新的日志)
扩展网站:最重要的是持久化。我一般会把表单提交的数据备份到本地普通文件中,以防数据库连接失效。一旦遇到数据库中断的情况,到每个服务器上收集文件虽然麻烦,但最起码不会造成破坏。
集群扩展:如cluster
处理未捕获的异常:
用多台服务器扩展:经常使用反向代理或正向代理。
网站监控:
压力测试:用loadtest模块