我正在试验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
小。
我发现的唯一缺点是我无法在响应中嵌入 EJS 数据,例如 userField:"用户名"
1-在这种情况下,我是否正确使用管道?
2-还有其他优点和缺点吗?
3-我是否矫枉过正?我应该只使用渲染,因为差异很小,或者连接速度慢
大 HTML,管道实际上节省了一天?
谢谢
这 10 毫秒可能是实际渲染模板所需的时间,当您以您正在执行的方式管道模板时不会发生这一步骤(按原样发送回模板,而不是其渲染形式)。
渲染模板,至少使用 EJS,是一个同步操作:Express 需要等待它完成才能发回响应,而且我认为没有任何可能以比调用 res.render()
更快的方式流式传输渲染的 EJS 模板。
但是,根据我的经验,它非常快,并且有一些 Express 设置(如 view cache
,在生产环境中启用,在开发环境中禁用)将有助于加快速度。