Платформа для видео сроком в квартал. Александр Тоболь.
Perl и SPDY
1. Perl и SPDY
Perlburg-2012
Колмогорцев Егор
ИМКН УрФУ
2. Проблемы HTTP
● Один запрос на одно соединение.
● Запросы может инициировать только клиент.
● Заголовки передаются несжатыми.
● Заголовки, которые не изменяются, приходится заново посылать при
каждом запросе.
● Сжатие передаваемых данных возможно только опционально.
Оптимальным является сжимать данные всегда.
3.
4. Цели SPDY
● Главная цель - уменьшить время загрузки веб - страниц на 50%
● Протокол не должен требовать изменений в TCP и HTTP
● Обеспечить возможность нескольких параллельных HTTP - запросов
через одно TCP соединение
● Предоставить серверу возможность самому инициировать
дополнительные соединения.
● Обеспечить возможность передачи данных через зашифрованное
соединение.
5. Реализация
● Параллельные HTTP запросы
● Приоритеты запросов.
● Сжатие HTTP - заголовков.
● Server push & server hint.
● Может работать как поверх SSL,
так и без него
● NPN (Next Protocol Negotiation) -
расширение SSL
6. Клиент на Perl
● SSL
○ Стабильный OpenSSL не поддерживает NPN
○ Perl модули о нем даже не слышали
○ Собием свежий OpenSSL
○ Пишем патч на Net::SSLeay
● SPDY::Protocol.pm
○ Парсит / собирает SPDY - фреймы
● SPDY::Client.pm
○ Асинхронно загружает ресурсы
○ Работает с HTTP::Request / HTTP::Response
7. Тестирование производительности
● Perl v. 5.10.1
● Запросы вида https://encrypted.google.com/search?q=n
● Скорость до загружаемого ресурса: ping = 237 ms, загрузка - 6,51 Mbps,
отдача - 4.3 Mbps.
Тесты:
a. Загрузка только HTML страницы (размер около 70 кб).
b. Загрузка страницы вместе с доп. контентом (изображения,
скрипты итд), суммарный размер примерно 250 kb.
8. Тестируемые
1. Последовательная загрузка (через Net::SSLeay::get_https)
2. Параллельная загрузка в 6 потоков (как в текущих реализациях
популярных браузеров)
3. Параллельная загрузка без ограничения на число потоков
4. SPDY - соединение