我应该流式传输html文件而不仅仅是渲染吗?

时间:2016-01-24 11:26:48

标签: node.js express stream response

我正在尝试使用node.js / express.js,并考虑将html文件传递给请求,而不仅仅是渲染。

我希望能够获得更好的性能,并且html文件第一次加载速度会更快。

//instead of
res.render('form',{title:'Login',userField:'Username',passField:'Password',photo: photo});

//I do
var path  = 'views/form.ejs';
var stream = fs.createReadStream(path);
stream.pipe(res);
This is actually about 10ms faster, even with a small file (385 bytes). I am developing so my files are still really 

小。

我发现唯一的问题是我无法在像userField这样的响应中嵌入EJS数据:'Username'

1-我在这种情况下是否正确使用过管道?

2-还有其他优点和缺点吗?

3-我是否过度杀戮?我应该只使用渲染,因为差异很小,或与

连接缓慢

大的HTML,管道实际上节省了一天?

谢谢

1 个答案:

答案 0 :(得分:2)

那些10ms可能是实际渲染模板所需的时间,当你以你正在做的方式管理模板时,这个步骤不会发生(这会发回模板按原样,而不是其呈现形式。)

至少使用EJS渲染模板是一种同步操作:Express需要等待它才能发回响应,并且我没有看到任何可能流式传输渲染的EJS模板这种方式比仅仅调用res.render()更快。

但是,根据我的经验,它非常快,并且有一些Express设置(如view cache,在生产中启用并在开发环境中禁用),这将有助于加快速度。