Компания Google выпустила модуль к Apache для обеспечения поддержки протокола SPDY
19 апреля 2012 года
Разработчики из компании Google представили первый стабильный релиз mod_spdy, модуля к HTTP-серверу Apache 2.2 с реализацией поддержки протокола SPDY. Модуль позволяет интегрировать в web-сервер прозрачную поддержку всех базовых возможностей SPDY, в том числе мультиплексирования потоков и сжатия HTTP-заголовков, без необходимости использования отдельных прокси или без реализации протокола на уровне приложения. Код проекта открыт под лицензией Apache, для установки подготовлены RPM- и DEB-пакеты.
Для организации SSL-соединений mod_spdy использует собственную модифицируемую версию штатного Apache-модуля mod_ssl, отличающуюся добавлением поддержки расширения NPN TLS HTTPS (патчи поставляются в комплекте с mod_spdy). Так как сжатие заголовков производится на этапе обработки соединений, а не на стадии формирования запроса, mod_spdy совместим с другими модулями Apache, т.е. сжатие заголовков не мешает работе модулей, манипулирующих HTTP-заголовками. После включения mod_spdy все обслуживаемые http-сервером сайты автоматически становятся доступными через протокол SPDY при открытии сайта браузером, поддерживающим SPDY. В настоящее время поддержка SPDY включена в браузере платформы Android, Chrome/Chromium и Firefox (по умолчанию SPDY будет включен в Firefox 13, в Firefox 11 и 12 требуется установка переменной network.http.spdy.enabled в about:config).
По оценке разработчиков использование mod_spdy в сочетании с поддерживающими протокол SPDY браузерами позволяет более чем в два раза ускорить загрузку web-страниц, содержащих большое число внешних элементов. Отдельный интерес представляет метод обеспечения мультиплексирования соединений в условиях архитектуры Apache, изначально рассчитанной на однопоточную обработку одного запроса в рамках одного соединения. Для обхода данного ограничения mod_spdy реализует дополнительное разделение по отдельным нитям потоков, связанных с обработкой соединений и запросов. Поток обработки соединений отвечает за декодирование фреймов SPDY и диспетчеризацию новых SPDY-запросов к пулу нитей с обработчиками запросов. Каждая нить с обработчиком запроса может обслуживать свой HTTP-запрос параллельно с другими запросами.
Протокол SPDY был создан специально для минимизации задержек при соединении и обмене данными между клиентом и сервером. При обслуживании соединения SPDY использует похожий на HTTP механизм взаимодействия в форме запрос/ответ. SPDY добавляет сеансовый уровень поверх SSL, что даёт возможность обеспечить передачу нескольких одновременных потоков в рамках одного TCP-соединения. При использовании HTTP запросы в рамках одного потока обслуживаются последовательно, задействование SPDY даёт возможность мультиплексировать запросы ресурсов, обрабатывать их параллельно и отправлять запросы с учетом динамически рассчитываемых приоритетов, увеличивая текущую пропускную способность. Использование SSL одновременно позволяет решить проблему с прохождением запросов через прокси серверы и позволяет организовать доставку данных по инициативе сервера, без специального запроса клиента (технология Server push). Дополнительное ускорение достигается за счёт сжатия HTTP-заголовков запроса и ответа, что уменьшает размер передаваемых данных и заметно ускоряет загрузку страниц, порождающих большое число мелких запросов (CSS, JavaScript файлы, картинки), особенно при использовании медленных каналов связи.
Код с эталонной реализацией SPDY
Источники
править
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.
Комментарии
Если вы хотите сообщить о проблеме в статье (например, фактическая ошибка и т. д.), пожалуйста, используйте обычную страницу обсуждения.
Комментарии на этой странице могут не соответствовать политике нейтральной точки зрения, однако, пожалуйста, придерживайтесь темы и попытайтесь избежать брани, оскорбительных или подстрекательных комментариев. Попробуйте написать такие комментарии, которые заставят задуматься, будут проницательными или спорными. Цивилизованная дискуссия и вежливый спор делают страницу комментариев дружелюбным местом. Пожалуйста, подумайте об этом.
Несколько советов по оформлению реплик:
- Новые темы начинайте, пожалуйста, снизу.
- Используйте символ звёздочки «*» в начале строки для начала новой темы. Далее пишите свой текст.
- Для ответа в начале строки укажите на одну звёздочку больше, чем в предыдущей реплике.
- Пожалуйста, подписывайте все свои сообщения, используя четыре тильды (~~~~). При предварительном просмотре и сохранении они будут автоматически заменены на ваше имя и дату.
Обращаем ваше внимание, что комментарии не предназначены для размещения ссылок на внешние ресурсы не по теме статьи, которые могут быть удалены или скрыты любым участником. Тем не менее, на странице комментариев вы можете сообщить о статьях в СМИ, которые ссылаются на эту заметку, а также о её обсуждении на сторонних ресурсах.