Кратко
- RFC 7540 разрешил серверу HTTP/2 заранее объявить и прислать ресурс через
PUSH_PROMISE. Клиент мог запретить отправку или отклонить отдельный поток. - RFC 9113 сохранил Server Push в июне 2022 года и признал издержки неудачного прогноза. Документ о Chrome 106 зафиксировал удаление возможности принимать, хранить и использовать такие потоки.
Упреждение вместо ожидания запроса
На странице HTML есть ссылка на таблицу стилей. Сервер видит ее раньше, чем браузер закончит получать страницу. Если отправить таблицу немедленно, можно сэкономить отдельный сетевой обмен. Спецификация HTTP/2 2015 года дала серверу такой ход: кадр PUSH_PROMISE объявлял запрос, который сервер составил за клиента, после чего ответ шел по отдельному потоку.
Правила ограничивали инициативу. Обещанный ресурс должен был относиться к реальному запросу клиента, быть безопасным и пригодным для кеширования; сервер обязан был иметь право отвечать за источник. Браузер мог установить SETTINGS_ENABLE_PUSH=0 или сбросить ненужный поток. В стандарте была предусмотрена возможность доставки, но браузер не подписывал поручение на каждую посылку.
Серверу не хватало важной части картины. У браузера уже могла лежать нужная таблица стилей. При согласовании содержимого могла понадобиться другая версия. Пользователь мог уйти со страницы. Заранее отправленные байты конкурировали за соединение с ответами, которых клиент действительно ждал. Правильно угаданная потребность сокращала задержку; ошибка превращала ускорение в помеху.
Проблему вписали в обновленный стандарт
RFC 9113, опубликованный в июне 2022 года, оставил Server Push полноценным разделом HTTP/2. В нем по-прежнему описывалась экономия одного обращения за скриптом или таблицей стилей. Там же говорилось, что успешный прогноз зависит от кеша, согласования содержимого и поведения человека. Ошибочные данные могут вытеснить более важный ответ и ухудшить производительность. Клиент сохранял возможность запретить push специальной настройкой.
Получилась точная граница возможностей стандарта. Он мог определить формат предложения и условия отказа. Ему не под силу обеспечить серверу знание состояния браузера или оплатить разработчикам постоянное обслуживание приема, хранения и выбора приоритетов. Наличие раздела в RFC еще не означало, что функция переживет следующее обновление продукта.
В августовском сообщении 2022 года команда Chrome объявила, что отключит HTTP/2 Server Push по умолчанию в версии 106. Она указала на трудность получения устойчивой выгоды и смешанные результаты, включая замедление. Список удалений в Chrome 106 формулировал уже сделанный шаг: браузер лишился способности принимать, держать в памяти и применять потоки, которые сервер присылает сам.
Порядок событий необычайно выразителен. Июньский RFC не вычеркнул Server Push, а предупредил о трудностях точного прогноза. Спустя несколько месяцев Chrome прекратил обрабатывать результат такого прогноза. Судьбу функции определил не спор о том, как назвать кадр, а цена его полезного применения в работающем браузере.
Подсказка вместо непрошенного ответа
В объяснении удаления Chrome назвал 103 Early Hints и предварительную загрузку возможными альтернативами. Подсказка сообщает о вероятном ресурсе, а браузер решает, обращаться ли за ним с учетом своего кеша. Для истории Server Push важен именно отказ от полной заранее отправленной реакции сервера. Письмо с советом и посылка с файлом занимают в работе браузера разное место.
HTTP/2 продолжил существовать. Server Push остался описан в протоколе. Chrome 106 перестал открывать отправленные сервером потоки. Эта разница показывает, где заканчивается власть спецификации и начинается эксплуатационное решение.
Обзор для участников
Читать полный обзор тенденции
Участники читают полный обзор с примечаниями к источникам за каждым выводом.
Стратегическое сообщество
Ежедневный брифинг на вашем языке, основанный на изменениях, которые мы проверили.
Вступить за USD 20 в месяцОтменить можно в любое время.
Подать заявку в Альянс лидеров
Участники также получают всю библиотеку исследований, ежедневную сводку по сетям, за которыми следят, и закрытый форум.






