Переходим на HTTP/2
Необходимый минимум знаний о новом сетевом протоколе.
В 2015 году на смену HTTP 1.0 пришел новый усовершенствованный протокол передачи данных. Сайты по всему миру добавляют поддержку HTTP/2 на свои серверы. Для каждого из нас пришло время начать внедрять новую технологию в повседневную жизнь.
Выгоды от перехода
- Некоторые сайты будут работать ощутимо быстрее (пока примерно 1 ресурс из 10, но сайтов поддерживающих HTTP/2 становиться больше с каждым днем);
- Передаваемые по сети данные будут в большой безопасности;
- Используя HTTP2, вы предпринимаете еще одну попытку не отстать от жизни.
Как приобщиться к прогрессу?
Вкратце: убедиться, что браузер поддерживает HTTP2, установить нужное дополнение и расслабиться.
Конкретные рекомендации для пользователей разных браузеров:
Firefox
Обновить браузер и поставить плагин SPDY Indicator.
Chrome
Обновить браузер и установить дополнение SPDY Indicator.
Opera
Установить дополнение FossBytes.
Safari
Временно перейти на другой браузер и следить за новостями…
Internet Explorer
Временно перейти на другой браузер и следить за новостями. Или попробовать тестовую реализацию поддержки протокола в браузере Internet Explorer, входящим в состав операционной системы Windows 10 Technical Preview.
Что делать веб-разработчикам?
1. Перевести сайт на сервер с поддержкой HTTP/2: H20, Apache Traffic Server и nghttp2. Либо поставить соответсвующие патчи для Apache или ngnix.
2. Тщательно разобраться, как работает протокол и приготовиться убрать из кода приемы для оптимизации http-запросов, так как некоторые из них могут замедлять работу сайта в браузерах при загрузке страниц по HTTP/2.
Подробности для любопытных
Чтобы понять достоинства HTTP/2 надо разобраться, чем был плох HTTP 1.0.
В 2011 году среднестатическая интернет страница представляла собой 800 Кб данных и 80 отдельных объектов, а в 2015 уже 2100 Кб и 100 объектов.
При загрузке страницы для каждого объекта, картинки или файла со скриптом, производится отдельный запрос к серверу. К примеру, когда вы открываете iphones.ru, происходит 161 http-запрос.
Этот факт замедляет загрузку сайтов (задержка создается за счет времемни ожидания ответа сервера на каждый запрос) и повышает вероятность сбоев в работе ресурса.
Проверить сколько http-запросов выполняется при загрузке страницы можно здесь.
Некоторые веб-разработчики стараются сократить количество http-запросов и применяют для этого разнообразные уловки. К примеру:
- Объединение нескольких картинок в один спрайт и нарезка их средствами CSS/JavaScript;
- Объединение всех внешних js-скриптов/css-таблиц в один файл;
- Шардинг (распределение данных для загрузки страниц по максимальному числу хостов).
Эти приемы в некоторой степени ускоряют работу сайтов, но глобально решить проблему может только введение нового протокола.
В http/2 несколько объектов объединяются в один фрейм (HEADERS, DATA). Эта возможность позволяет загрузить множество пакетов данных с помощью одного соединения, что дает ощутимый прирост скорости загрузки.
Еще в новом протоколе более эффективный метод сжатия заголовков. Эта мелочь тоже вносит вклад в увеличение скорости загрузки страниц.
Крупным недостатком HTTP 1.0 является безопасность. Уже не первый десяток лет в СМИ регулярно появляются новости о новых уязвимостях http и https. Создатели новой версии серьезно поработали над устранением подобных проблем и вывели безопасность на новый уровень.
Но многочисленные исследования показывают, что у нового протокола с безопасность все еще далеко не идеально. Одним из самых интересных материалов об этом, на мой взгляд, является доклад от Yahoo Security)
Подробную техническую информацию о HTTP/2 можно найти в:
- Документе HTTP2 Explained;
- Спецификации RFC 7540, опубликованной 15 мая 2015 года;
- Блоге одного из авторов проекта Даниэля Штейнберга.
Что дальше?
На подходе еще один протокол QUIC! В нем будут решены многие проблемы HTTP 2 (прежде всего речь идет о безопасности). Экспериментальная версия QUIC внедрена в браузер Chrome и на серверы некоторых сервисов Google. Но о его массовом внедрении говорить пока рано.