Посты с тагом производительность
11
мая
2008

Обход лимита одновременных соединений в браузерах

Статья написана еще в декабре 2006 года, но, не смотря на это, показалась мне интересной и актуальной. Тем не менее, некоторые цифры в тексте могут отличаться от актуальных для настоящего времени значений.

Автор: Ryan Breen, ajaxperformance.com
Оригинал: «Circumventing browser connection limits for fun and profit»
Перевод: Александр Мусаев, paradigm.ru

Недавно на Digg появился видеоролик с Metacafe, где демонстрировался способ увеличения скорости открытия страниц в браузе. Рассмотрим подробнее то, как происходит управление сетевыми соединениями, чтобы понять причину такого эффекта.

В процессе принятия решений, разработчики программного обеспечения зачастую вынуждены руководствоваться «утилитарными» принципами. Перефразируя Джереми Бентама, таковым является подход, при котором наилучший результат достигается для наибольшего количества конечных пользователей (в оригинале, согласно классической формулировке Бентама, моральным является то, что «приносит наибольшее счастье наибольшему количеству людей,» — прим. переводчика). Потеря производетельности, которая отразится на работе определенной группы пользователей, может быть обоснована выйгрышем для более широкой группы.

Все распространенные сейчас браузеры изначально разрабатывались еще в то время, когда подавляющее большинство пользователей Сети работало через низкоскоростные dial-up подключения. Это было основной причиной необходимости ограничивать количество одновременных соединений. Постоянное чередование большого количества сетевых соединений может приводить к существенной потере скорости пересылки данных для каждого из них. Кроме того, веб-серверы и прокси в тот период так же не отличались высокой производительностью. Поэтому лимитирование пула соединений в браузере было дополнительно обосновано снижением нагрузки на сетевую инфраструктуру.

IE и Firefox по-умолчанию допускают 6 параллельных соединений по протоколу HTTP 1.1. При этом на каждых хост может приходиться не более 2 одновременных соединений. С HTTP 1.0 немного другая история, но мы не будем рассматривать его отдельно, т.к. преимущества постоянных соединений в сделали версию 1.1 значительно более предпочтительной.

Конечно, в настоящее время утилитарный способ принятия решений давно себя изжил. Большинство пользователей имеют доступ в сеть по широкополосным каналам, и пропускная способность с клиентской стороны уже перестала быть узким местом. Чаще всего основной причиной задержек при загрузки отдельных объектов становится процесс установки соединения и пересылка запросов. Увеличение количества одновременных соединений может сократить общее время обработки списка загружаемых объектов.

К сожалению, полагаться на то, что пользователи сами станут оптимизировать настройки браузеров, бессмысленно. Но для повышения производительности веб-разработчики могут прибегать к альтернативным решениям.

Большинство сайтов использует один единственный хост, что ограничивает количество соединений до двух. Распределение контента между несколькими хостами может стать эффективной стратегий для распараллеливания загрузки. Добиться этого довольно несложно, т.к. браузеры обращают внимание только на доменное имя, а не на IP. Поэтому для images1.yoursite.com и images2.yoursite.com будет выделено уже не 2, а 4 отдельных соединения. Читать далее →

30
декабря
2007

Оптимизация работы веб-приложений: файловая система

Продолжаем тему оптимизации работы веб-приложений. В данном разделе будут рассмотрены методы решения этой задачи в контексте первого из перечисленных в предыдущей части факторов. Речь пойдет о файловой системе.

Существует множество способов для того, чтобы повысить скорость выполнения файловых операций. Большинство из тех, которые будут описаны ниже, относятся к категории экстенсивных методов, т.е. основанных на внешних по отношению к веб-приложению средствах. В частности это относится к выбору железа и типа файловой системы, что актуально для систем, работающих на выделенных серверах.

Помимо этого так же будут рассмотрены общие подходы повышения эффективности работы веб-приложений, основанные на оптимизации их кода. Читать далее →