【问题标题】:implementing BigPipe for .NET to improve performance为 .NET 实施 BigPipe 以提高性能
【发布时间】:2010-06-23 23:04:43
【问题描述】:

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

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

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

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

cmets/想法?

【问题讨论】:

    标签: .net performance scalable


    【解决方案1】:

    我在一个 ASP.Net MVC Web 项目中实现了 BigPipe 的一个版本,通过早期刷新和并行执行 pagelet 内容。你可以在How To Implement BigPipe Using ASP.Net MVC 上阅读它并在GitHub 上分叉它。

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

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

    【讨论】:

    • 您好 Jose,如果您有时间,我将不胜感激。我现在正在关注您的教程并尝试在我的 mvc 项目中实现 bigpipe,但我的 pagelet 在我的父视图/布局之前一直呈现。这听起来是不是很明显?我试过看看你的示例项目,但它没有用 VS 2013 打开
    • 嗨@Adrian 你设法让这个解决方案工作了吗?我也在努力让它发挥作用。
    • 是的,我做到了。你有什么问题?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-12-30
    • 1970-01-01
    • 1970-01-01
    • 2010-11-26
    • 1970-01-01
    • 1970-01-01
    • 2014-10-12
    相关资源
    最近更新 更多