Разработчики из компании 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 открыт под лицензией Apache. Кроме представленного модуля к Apache также доступен специальный прокси-сервер, позволяющий использовать протокол SPDY для любых сайтов. Реализации протокола также подготовлены для языков Python, Go, Ruby, Java и JavaScript (node.js).

Протокол SPDY продвигается для включения в состав будущего стандарта HTTP/2.0. При этом интерес к развитию данного протокола и его поддержке в своих продуктах высказывает даже компания Microsoft, недавно представившая черновик спецификации "HTTP Speed+Mobility", непосредственно базирующейся на протоколе SPDY, адаптированном для мобильных приложений (по сути Microsoft предлагает упрощённый вариант SPDY, например, поддержка сжатия и шифрования переводится в категорию опциональных возможностей, удалена поддержка средств контроля за потоком и техники server push).

Источник: http://www.opennet.ru/opennews/art.shtml?num=33638