Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Perl и SPDY

857 views

Published on

Обзор протокола SPDY и использование его в Perl для ускорения параллельных запросов.

Published in: Education
  • Be the first to comment

  • Be the first to like this

Perl и SPDY

  1. 1. Perl и SPDY Perlburg-2012Колмогорцев Егор ИМКН УрФУ
  2. 2. Проблемы HTTP● Один запрос на одно соединение.● Запросы может инициировать только клиент.● Заголовки передаются несжатыми.● Заголовки, которые не изменяются, приходится заново посылать при каждом запросе.● Сжатие передаваемых данных возможно только опционально. Оптимальным является сжимать данные всегда.
  3. 3. Цели SPDY● Главная цель - уменьшить время загрузки веб - страниц на 50%● Протокол не должен требовать изменений в TCP и HTTP● Обеспечить возможность нескольких параллельных HTTP - запросов через одно TCP соединение● Предоставить серверу возможность самому инициировать дополнительные соединения.● Обеспечить возможность передачи данных через зашифрованное соединение.
  4. 4. Реализация● Параллельные HTTP запросы● Приоритеты запросов.● Сжатие HTTP - заголовков.● Server push & server hint.● Может работать как поверх SSL, так и без него● NPN (Next Protocol Negotiation) - расширение SSL
  5. 5. Клиент на Perl● SSL ○ Стабильный OpenSSL не поддерживает NPN ○ Perl модули о нем даже не слышали ○ Собием свежий OpenSSL ○ Пишем патч на Net::SSLeay● SPDY::Protocol.pm ○ Парсит / собирает SPDY - фреймы● SPDY::Client.pm ○ Асинхронно загружает ресурсы ○ Работает с HTTP::Request / HTTP::Response
  6. 6. Тестирование производительности● 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.
  7. 7. Тестируемые1. Последовательная загрузка (через Net::SSLeay::get_https)2. Параллельная загрузка в 6 потоков (как в текущих реализациях популярных браузеров)3. Параллельная загрузка без ограничения на число потоков4. SPDY - соединение
  8. 8. Спасибо за внимание! Можно задавать вопросы...

×