Внедрение BigPipe для.NET для повышения производительности

Очень классная статья о том, как Facebook разбивает свою страницу на "листовки", чтобы максимизировать работу, выполняемую сервером и браузером при создании сложной страницы, которая захватывает различные ресурсы (рекламу, каналы, друзей и т. д.). они называют это большой трубкой.

Стив Соудерс на самом деле говорил об этом на одном из своих выступлений, и он назвал это " преждевременной очисткой документа".

в.NET вы не можете легко сделать это, но я сделал это, переопределив метод рендеринга и очистив буфер ответов на ранней стадии, так что это возможно, и это работает довольно хорошо. но я никогда не пробовал это в таком большом масштабе. мой вопрос, возможно ли построить BigPipe в.NET? они сказали, что построили их на Java и PHP. я думаю, что это может быть сделано и в.NET, но мне интересно, может ли архитектура.NET winforms быть неоптимальной для выполнения чего-то подобного.

Я собираюсь запустить проект в нашей компании, чтобы создать что-то подобное, но мне нужно будет провести еще много исследований, потому что это не будет маленький проект. Я хотел бы создать что-то, что могло бы поддерживать разбиение ЛЮБОЙ произвольной страницы на эти "листовки". в.NET было бы неплохо иметь возможность превращать наши пользовательские элементы управления в эти "листовки" и "сбрасывать" их все кусками - в стиле bigpipe.

комментарии / мысли?

1 ответ

Я реализовал версию BigPipe в веб-проекте ASP.Net MVC, заблаговременно выполняя параллельную очистку и выполнение содержимого страниц. Вы можете прочитать его о том, как реализовать BigPipe с использованием ASP.Net MVC и разложить его на GitHub.

Этот метод легко применить, если вы реализуете листовки как PartialViews, которые выполняются в конце HTML-документа, непосредственно перед закрытием <body> раздел.

Кроме того, если вы хотите в полной мере использовать преимущества BigPipe, вам следует загружать Javascript и CSS, необходимые для постлетов, в определенной последовательности, обеспечивая лучший пользовательский опыт. BigPipe загружает ресурсы CSS параллельно до внедрения HTML-кода страницы на странице, и, когда каждая страница-страница внедряется, она переходит к параллельной загрузке и выполнению Javascript.

Другие вопросы по тегам