3

一篇非常酷的文章,介绍了 facebook 如何将他们的页面分解为“pagelet”,以在构建获取各种资源(广告、提要、朋友等)的复杂页面时最大化服务器和浏览器所做的工作。他们称之为大管。

steve souders实际上在他的一次演讲中谈到了这一点,他称其为“提早刷新文件”。

在 .NET 中,你不能轻易做到这一点,但我已经通过重写渲染方法和提前刷新响应缓冲区来做到这一点,所以这是可能的,而且效果很好。但我从未尝试过这么大规模。我的问题是,在 .NET 中构建 BigPipe 是否可行?他们说他们用java和PHP构建了他们的。我认为它也可以在 .NET 中完成,但我想知道 .NET winforms 架构是否不适合做这样的事情。

我正在考虑在我们公司推动一个项目来建造这样的东西——但需要做更多的研究,因为这不是一个小项目。我想构建一些可以支持将任意页面分解为这些“pagelet”的东西。在 .NET 中,能够将我们的自定义用户控件转换为这些“pagelet”并将它们全部“刷新”成块 - bigpipe 样式可能会很好。

评论/想法?

4

1 回答 1

3

我已经在一个 ASP.Net MVC Web 项目中实现了 BigPipe 的一个版本,通过早期刷新和并行执行 pagelet 内容。您可以阅读如何使用 ASP.Net MVC 实现 BigPipe并在GitHub 上fork 。

<body>如果您将 pagelet 实现为在 HTML 文档末尾(就在关闭部分之前)执行的 PartialView,则此技术很容易应用。

此外,如果您想充分利用 BigPipe,您应该按照一定的顺序加载 pagelet 所需的 Javascript 和 CSS,以提供最佳的用户体验。BigPipe 在将 pagelet 的 HTML 注入页面之前并行加载 CSS 资源,当每个 pagelet 都被注入后,它会继续进行 Javascript 并行下载和执行。

于 2010-09-26T14:13:07.817 回答