mootools:我想在Facebook上实现类似于Big pipe的架构

时间:2011-02-07 03:07:23

标签: javascript mootools javascript-framework

我正在开发一个mootools应用程序。我使用了Reqeust类来实现流水线操作。 我想开发一种优秀的方法来处理客户端服务器请求。我参考了以下文章,了解大型管道在facebook中的工作原理。

http://www.facebook.com/notes/facebook-engineering/bigpipe-pipelining-web-pages-for-high-performance/389414033919

在Facebook中,在更新数据用户屏幕的任何服务器响应到达时调用javascript函数。 (见截图)

http://img815.imageshack.us/img815/5154/facebookna.jpg

如果我得到这种架构的基本模型,我可以开始使用它构建应用程序 代码。

有人可以给我这样一个基本型号吗?

到目前为止,我已经设计了一个架构,其中response_data存储在一个全局变量中,然后调用一个函数来将数据更新到用户屏幕。(在这里使用同步请求)非常慢。

那么哪种方法优于'同步或异步'?

1 个答案:

答案 0 :(得分:3)

首先,感谢阅读,这是一篇非常有趣的博文。

您可能希望了解受Facebook的BigPipe启发的this libary。注意:我不支持它,因为我从未使用它,但是自己构建它并不是一件容易的事。

关于同步和异步是否更好,这取决于。同步是更简单 - 依赖性是显而易见的,并且没有开销。如果您的资源没有得到充分利用,异步只是一个优势,您的处理可以很容易地分解为独立的块。我不知道你要做什么,所以你需要自己决定性能瓶颈的实际位置,以及构建应用程序以便可以并行下载,处理和呈现多个部分实际上会提供一个优点

例如,如果您要下载单个大量数据块以在浏览器中呈现为表格,那么将该数据分成多个并行下载将提高性能 - 代价是创建一些排队系统到处理无序响应。另一方面,虽然在技术上较慢,但是将下载批处理为同步块以便在下一个块被请求之前下载并呈现一个块,仍然会对感知性能产生奇迹,并且更加简单替代品。