我一直在研究Facebook的bigpipe技术的流程,但我有这个问题。
这件事是如何实施的?是通过ajax请求收到的小页面吗? 我一直在寻找这个bigpipe的源代码,但它指向了一个404页的github。
有人可以用低级(编程算法)方式解释这个大管。我真的对这种技术感兴趣。
提前致谢
答案 0 :(得分:5)
嗯,不,主要内容和小页面都是通过相同的连接收到的。小页面只是在生成到浏览器时进行流式处理,并使用Javascript放在文档中。
您可以在PHP here中找到一个开放(且简单)的BigPipe实现。
答案 1 :(得分:1)
我最近开发了一个简单的页面框架。核心思想是将页面分成几个特征,每个特征将并行处理。每个功能的输出都是一个HTML段,然后框架按布局配置进行组装。第一个版本并不完美。如果您有兴趣,请点击此处https://github.com/chennanfei/Moonlight
答案 2 :(得分:1)
在详细解释Bigpipe如何工作之前,我会提到我开发了实现Bigpipe的Django扩展。 Bigpipe-Response。
我将使用Bigpipe-Response代码来说明Bigpipe如何工作。
Bigpipe在以下步骤中使用浏览器建立的初始连接:
服务器将发回HTML。
一种。不关闭</BODY></HTML>
标签。这种浏览器方式假定连接仍处于打开状态。
b。 HTML将包含空的<DIV id="pagelet-1"></DIV>
元素,其中bigpipe会填充页面内容。
C。页面顶部包含小型javascript(请参阅第3步)
在页面顶部,有一个小的javascript函数,该函数接受JSON并使用该JSON内容填充页面。 bigpipe.js
renderPagelet
文件中的函数Bigpipe.js
将使用JSON数据填充HTML页面。</BODY></HTML>
标签。 希望这会有所帮助。 有关更多信息,请参阅文档Here。
答案 3 :(得分:0)
我是一名asp .net mvc开发人员。我找到了一个很好的例子,说明如何使用asp .net mvc管道实现BigPipe。你可以在这里找到源代码和解释:
https://github.com/JMPerez/BigPipe
他还试图检查JavaScript是否存在,如果它不存在,内容将被刷新到服务器上的视图中。我喜欢他的文章,因为他也讨论了他的实施的缺点。
我正在尝试将他的例子应用于ZenZoy 祝我好运。
答案 4 :(得分:0)
您可以查看bigpipe here
的Java实现