我正在尝试使用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,管道实际上节省了一天?
谢谢
答案 0 :(得分:2)
那些10ms可能是实际渲染模板所需的时间,当你以你正在做的方式管理模板时,这个步骤不会发生(这会发回模板按原样,而不是其呈现形式。)
至少使用EJS渲染模板是一种同步操作:Express需要等待它才能发回响应,并且我没有看到任何可能流式传输渲染的EJS模板这种方式比仅仅调用res.render()
更快。
但是,根据我的经验,它非常快,并且有一些Express设置(如view cache
,在生产中启用并在开发环境中禁用),这将有助于加快速度。