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)
每个部分?
答案 0 :(得分:1)
重点是将生成整个HTML的大任务分成许多小任务(也就是小页面)。例如,假设您要向浏览器发送两件事:用户详细信息和他刚刚进行的事务的详细信息。您可以从DB加载用户并将其发送到浏览器,然后从DB加载事务并将其发送到浏览器,而不是同时执行这些任务(即从DB加载数据)和发送HTML。
这可以带来更好的用户体验和更快的加载时间(因为浏览器通过块生成HTML块,这比一次性更高效)。
请注意,这是由Facebook开发的(或至少被广泛使用),因此请阅读本文以获取更多信息: