2010-06-23 60 views
3

非常酷的article關於Facebook如何將頁面分解爲「小頁面」,以最大限度地提高服務器和瀏覽器在構建複雜頁面時完成的工作,該頁面可以抓取各種資源(廣告,朋友等)。他們稱之爲bigpipe。實施BigPipe for .NET以提高性能

steve souders在他的一次談話中實際上談到了這一點,他稱之爲「儘早沖洗文檔」。在.NET中,你不能輕易做到這一點,但我已經通過儘早重寫render方法和刷新響應緩衝區來做到這一點,所以這很有可能,它的工作原理非常好。但我從來沒有嘗試過這個大規模。我的問題是,在.NET中構建BigPipe是否可行?他們說他們用java和PHP構建了它們。我認爲它也可以在.NET中完成,但我想知道如果.NET winforms體系結構可能不適合做這樣的事情。

我正在考慮推動我們公司的一個項目來構建類似的東西 - 但需要做更多的研究,因爲這不會是一個小項目。我想創建一些可以支持將任意任意頁面分解成這些「pagelets」的東西。在.NET中,能夠將我們的自定義用戶控件轉換爲這些「pagelets」並將它們全部「刷新」爲塊 - bigpipe樣式可能會很好。

評論/想法?

回答

3

我已經在ASP.Net MVC web項目中實現了BigPipe的一個版本,通過提前刷新和並行執行pagelets內容。您可以在How To Implement BigPipe Using ASP.Net MVC上閱讀它並在GitHub上發佈它。

如果您在關閉<body>部分之前實施頁面小部件作爲在HTML文檔末尾執行的部分視圖,則該技術很容易應用。另外,如果您想充分利用BigPipe,則應該按照特定的順序加載pagelet所需的Javascript和CSS,以提供最佳的用戶體驗。 BigPipe在將頁面小部件的HTML注入頁面之前並行加載CSS資源,並且當每個小頁面被注入時,它進行到Javascript並行下載和執行。

+0

何塞,你好,如果你有時間我會很感激你。我現在正在關注你的教程,試圖在我的mvc項目中實現bigpipe,但是我的pagelets在我的父視圖/佈局之前繼續渲染。這聽起來像是明顯的東西嗎?我試着看看你的示例項目,但它不打開VS 2013 – Adrian 2015-09-28 16:02:26

+0

嗨@Adrian你設法讓這個解決方案工作?我也試圖讓它工作。 – Raha 2016-07-20 05:46:55

+0

是的,我做到了。你有什麼麻煩? – Adrian 2016-07-21 12:17:26