Gab*_*Mor 1 gzip stream reactjs server-side-rendering
使用 React/Express 处理 SSR 应用程序时,我试图掌握 renderToNodeStream 和一般流。
我有一个大页面(400kb 未压缩)并且使用 renderToNodeStream 提供了一个非常好的 TTFB(到第一个字节的时间),我想念的是一些压缩以使发送回的 HTML 响应更小但我不能让它与 renderToNodeStream 一起工作。
我错过了什么吗?
是否可以流式传输新鲜呈现的响应并压缩它们?
const stream = renderToNodeStream(<MyApp/>)
// this doesn't work
stream.pipe(zlib.createGzip())
stream._flush = zlib.Z_SYNC_FLUSH
stream.pipe(
res,
{ end: "false" }
)
// stream.on("data", data => {
// console.log(data)
// })
stream.on("end", () => {
res.end(pageEnd())
})
Run Code Online (Sandbox Code Playgroud)
小智 5
res.setHeader('Content-Type', 'text/html');
Run Code Online (Sandbox Code Playgroud)
在流式传输到客户端之前。
如压缩中间件代码所示,如果Content-Type不存在,中间件不会压缩内容。
最终代码将是:
res.setHeader('Content-Type', 'text/html');
const stream = renderToNodeStream(<MyApp/>)
stream.pipe(
res,
{ end: "false" }
)
stream.on("end", () => {
res.end(pageEnd())
})
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
412 次 |
| 最近记录: |