無論用java、.net還是python都是可以實作bigpipe的…
拿那篇文章中的php顯示頁做示例:
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIn5GcuEWM3gzY4UWZzMDOklDMmN2M0QzMlJ2YkZTMwcjZ3QGZfdWbp9CXt92Yu4GZjlGbh5SZslmZxl3Lc9CX6MHc0RHaiojIsJye.png)
先輸出頁面的主體結構:
然後按順序更新頁面的内容:
2s後輸出header
4s後輸出content
6s後輸出footer
從加載到顯示共消耗約13s (2 + 4 + 6 + 1 ~= 13s),符合預期結果
這個示例的源碼(可複制至本地直接運作):
上面是将界面的顯示順序固定寫死了,下面将展示一個靈活的動态界面:
先輸出6個内容容器,然後建構6個用戶端請求,當收到請求資料時直接傳回給用戶端。如果你需要讓界面的内容按順序顯示,隻需要修改,傳回的delay值,比如按索引值的大小進行修改
這個示例的完整源碼:
上面的示例中并沒有像第一個例子一樣,顯示輸出header資訊('Transfer-Encoding' : 'chunked'),而浏覽器,在response裡卻看到了,猜測是node.js在輸出的時候内部加上去的。
相比php,node.js内部實作并沒有“緩沖池”的功能,都是直接輸出,很簡單吧…
本文參考:
<a href="http://snoopyxdy.blog.163.com/blog/static/60117440201111159523864/" target="_blank">node.js搭建bigpipe demo時碰到的雷</a>
<a href="http://www.subbu.org/blog/2010/07/bigpipe-done-in-node-js" target="_blank">BigPipe Done in Node.js</a>
<a href="https://github.com/jehrhardt/bigpipe-node" target="_blank">bigpipe-node</a>
<a href="http://www.facebook.com/note.php?note_id=389414033919" target="_blank">BigPipe: Pipelining web pages for high performance</a>