【发布时间】:2012-01-09 01:04:44
【问题描述】:
我正在节点中构建一个超级简单的服务器,在我的 onRequest 侦听器中,我试图根据路径确定我是否应该提供静态文件(磁盘外)或一些 json(可能从 mongo 中提取) request.url.
目前我正在尝试先统计文件(因为我在其他地方使用 mtime),如果没有失败,那么我从磁盘读取内容。像这样的:
fs.stat(request.url.pathname, function(err, stat) {
if (!err) {
fs.readFile(request.url.pathname, function( err, contents) {
//serve file
});
}else {
//either pull data from mongo or serve 404 error
}
});
除了为request.url.pathname 缓存fs.stat 的结果之外,还有什么可以加快此检查的速度吗?例如,查看fs.readFile 是否出错而不是stat 是否一样快?或者使用fs.createReadStream 而不是fs.readFile?或者我可以使用child_process.spawn 中的内容检查文件吗?基本上,我只是想确保在将请求发送到 mongo 以获取数据时,我不会花费任何额外的时间来处理 fileio...
谢谢!
【问题讨论】:
-
我一直根据我的需要使用
stat或statSync(例如配置中的statSync),但我猜从技术上讲,使用readfile和捕获错误(尽管错误捕获在 JS 中 very 很重,所以我可能错了)。不过,总的来说,我更喜欢使用stat,因为它比故意抛出错误更干净。通常避免使用child_process,因为node正在推动Windoze 系统,使用它的任何代码都会中断。 -
@Lite Byte 你应该认真接受 DeadDEnD 给出的答案...
标签: performance node.js