https://github.com/guileen/node-kickstart/
刚刚写了个雏形, 性能在理论上与node helloworld相同.
绝大部分请求的所覆盖的代码只有一句
http.createServer(function(req, res) {
handlers[req.path](req, res); // <-- 绝大部分请求直接从hashtable中获取handler
}).listen(port);
以下文字来自于项目文档. 希望大家能够多发Pull Request
为什么要创建这个项目?
性能
大多数的nodejs项目使用express, 并使用express来创建项目的基本骨架. 但经过测试, 这样的代码运行效率较低. 本项目希望能够使代码的运行效率接近于node helloworld的性能.
结构
而若不使用类似express的框架, 直接编写使用http.createServer(fn)
来编写代码, 则容易出现代码混乱难以维护的情况.
浏览器端渲染
传统开发方式使用服务器端模板渲染, 而模板渲染的损耗甚大. 模板文件静态化, 动态数据以API获取, 使用浏览器端渲染以分散服务器压力是非常有效的优化方案.
cookie, session, querystring, body 按需解析
express, connnect 中间件默认对所有请求解析cookie, 加载session, 解析querystring, 解析 body, 在许多的请求中, 这些解析并无必要.
工具
本项目可能会包含以下的工具
- deploy
- init.d
- cluster
更新记录
4-22 加入res.staticCache方法, 本机测试性能是connect.staticCache的两倍. 中间遇到了些问题, 性能始终不够理想, 后发现, http.ServerResponse.setHeader / getHeader 性能较低, 改用 writeHead 解决. 另猜测, 读写时Buffer性能低于字符串, utf8性能低于binary.
在设计目标中: 本不应包含此方法, 所有静态内容当交由nginx处理. node仅负责处理动态API数据. 主要为了简化服务结构.