0

https://github.com/jehrhardt/bigpipe-node/blob/master/app.js http://www.subbu.org/blog/2010/07/bigpipe-done-in-node-js

我注意到 bigpipe 的所有实现都需要“刷新”HTML。换句话说,总是会发生这样的事情:

// header n stuff

res.write('<script>function flushHTML(id, html) {'
  + 'document.getElementById(' + id + ').innerHTML = ' + html
  + '};</script>')

// more stuff

// a "pagelet"
res.write('<script>flushHTML(' + someID + ', ' + myHTML + ');</script>')

res.end('</body></html>')

为什么你不能只在res.write(html)每个部分不冲洗?

4

1 回答 1

1

重点是将生成整个 HTML 的大任务拆分为许多小任务(也称为 pagelet)。例如,假设您想向浏览器发送两件事:用户详细信息和他刚刚进行的交易的详细信息。无需同时执行这两项任务(即从 DB 加载数据)并在此之后发送 HTML,您将从 DB 加载用户并将其发送到浏览器,然后从 DB 加载事务并将其发送到浏览器。

这最终会带来更好的用户体验和更快的加载时间(因为浏览器会逐块生成 HTML,这比一次生成所有内容更有效)。

请注意,这是 Facebook 开发的(或至少被 Facebook 广泛使用),因此请阅读本文了解更多信息:

http://www.facebook.com/note.php?note_id=389414033919

于 2012-10-31T07:50:14.610 回答