【问题标题】:Changing http status during streaming rendering (renderToNodeStream)在流式渲染期间更改 http 状态 (renderToNodeStream)
【发布时间】:2021-09-21 16:32:01
【问题描述】:

我尝试实现流式渲染。 我现在做的是:

// it is example code
res.write(htmlHeader)
const renderingStream = renderToNodeStream(<App />);
renderingStream.pipe(res)
renderingStream.on('end', () => {
 res.end();
});

// I am tracking error a bit differently, it is just example
renderingStream.on('error', () => {
  res.status(500);
});

据我所知,在我们向客户端发送任何内容之前,必须设置 express.js 中的 http 状态。 这意味着,如果我先发送 html 标头部分(在渲染期间预取资产),这意味着我无法将 http 状态代码更改为 200 之后的任何其他内容?

是否可以在发送标头部分后在渲染期间更改 http 状态? 如果没有,如果人们决定进行流式渲染,他们如何处理 http 状态?

谢谢!

【问题讨论】:

    标签: node.js reactjs express http


    【解决方案1】:

    http 规范说响应客户端的第一步是编写标头,然后开始编写响应的正文。

    当您调用 res.write 时,您会隐式告诉 nodejs 编写标头,然后开始编写您的内容。

    我猜你不能做你想做的事。 客户端需要自己判断body不一致。

    【讨论】:

      【解决方案2】:

      因此,如果不可能,是否意味着 renderingToNodeStream 或流式渲染本身对 SEO 不友好?

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-01-25
        • 2019-05-23
        • 2022-11-06
        • 1970-01-01
        • 2021-12-18
        • 2019-10-06
        • 2018-02-27
        • 1970-01-01
        相关资源
        最近更新 更多