【发布时间】:2012-03-26 20:36:46
【问题描述】:
在您在网络上找到的大多数示例中,index.html 文件的提供方式如下:
function serveIndexPage(response) {
fs.readFile('__dirname + /public/index.html', function (err, data) {
response.end(data);
});
};
这似乎是个坏主意,因为整个文件被读入内存然后发送到客户端。有没有更好的方法来做到这一点?我知道 Connect 和 Express 等库提供了这样的功能,但对于我的项目,我想使用普通的 node.js。
编辑
此外,您有时会看到 readFileSync 被使用,恕我直言,这更糟糕。
【问题讨论】:
-
您可以使用
fs.createReadStream(file).pipe(response),这可能会提高性能,但如果您担心这种性能,我建议您使用静态文件服务器或 CDN 来提供静态文件。 -
管道是要走的路。我不同意 Linus 的观点。如果您提供较大的文件,您不希望所有内容都在内存中。
-
@Jan 你介意提供一个例子吗?
-
发布了一个例子作为答案
标签: node.js