我正在尝试使用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:'Username'
1- 在这种情况下我是否正确使用了管道?
2-还有其他优点和缺点吗?
3-我是不是太过分了?我应该只使用渲染,因为差异很小,或者与
的连接速度较慢大型 html,管道真的可以拯救世界吗?
谢谢
最佳答案
这 10 毫秒可能是实际渲染模板所需的时间,当您按照您正在做的方式管道传输模板时(按原样发送回模板,并且不是它的渲染形式)。
渲染模板(至少对于 EJS 来说)是一个同步操作:Express 需要等待它完成才能发回响应,而且我看不到任何以某种方式流式传输渲染的 EJS 模板的可能性这将比仅仅调用 res.render() 更快。
但是,根据我的经验,它的速度相当快,并且有一些 Express 设置(例如 view cache
,在生产环境中启用并在开发环境中禁用)有助于加快速度。
关于node.js - 我应该流式传输 html 文件而不仅仅是渲染吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34975155/