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

标签 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 

小。

我发现的唯一缺点是我无法在响应中嵌入 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/

相关文章:

node.js - 是否在 package.json 中使用确切的版本号?

node.js - 字段列表中的未知列 Sequelize

node.js - Node.js 中的异步收集方法

image - 如何在 Flutter 中显示字节数据中的图像

node.js - Jenkins 构建中未识别 karma

node.js - socket.on 事件被多次触发

angularjs - 使用适用于 Visual Studio 的 Angular 和 NodeJS 工具构建 NodeJS 应用程序

javascript - 错误 : Missing Helper in Handlebars. js

android - 从网络填充 BaseAdapter

Java - 下载后开始上传