внедрение BigPipe для .NET для повышения производительности - PullRequest
3 голосов
/ 24 июня 2010

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

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

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

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

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

1 Ответ

3 голосов
/ 26 сентября 2010

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

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

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

...