Кратко

  • HTTP 103 передаёт поля, которые сервер ожидает увидеть в окончательном ответе. Клиент может начать preload, но ранние поля не заменяют финальные и не меняют их обработку.
  • Источник или кэш высказывает предположение; браузер допускает расход; итоговый ответ определяет навигацию; целевой ресурс отдельно проходит сетевые, защитные и прикладные проверки.

Запрос навигации достиг сервиса. Каркас интерфейса известен, но состояние сеанса ещё может привести к форме входа. У пограничного кэша сохранилось вчерашнее поле, указывавшее на shell.css. Ожидание отнимет один сетевой цикл. Немедленная загрузка может оказаться полезной, а может обслужить страницу, которой не будет.

RFC 8297 оформляет это как заведомо слабое действие. Сервер посылает 103 Early Hints с некоторыми вероятными полями, продолжает вычисление, а затем отправляет финальный ответ. Увидев отношение preload, клиент вправе начать получение цели.

Название статуса удерживает границу. Подсказка не объявляет успех, не гарантирует повторение поля и не подтверждает содержимое URL. Она даёт возможность действовать до полной истины, а не приказ считать прогноз истиной.

Промежуточное сообщение и один окончательный исход

RFC 9110 относит 103 к информационным 1xx. Один запрос может получить несколько промежуточных ответов, после которых следует финальный. У 1xx есть только секция полей, без содержимого и трейлеров. Пользовательский агент может игнорировать неожиданный информационный ответ.

RFC 8297 разрешает оценивать ранние поля ради производительности, но запрещает этой оценке иначе влиять на обработку финала. Поздний 302 остаётся перенаправлением, а 500 — ошибкой независимо от начатого preload.

Нельзя делать вывод и из отсутствия. В 103 сервер указывает только то, что уже знает. Не названное поле может появиться позже. Несколько 103 могут добавлять варианты, а финальный набор — сохранить часть и заменить другую.

Такое расхождение является свойством, а не поломкой. Требование полной точности уничтожило бы временное преимущество.

Четыре владельца решения

Источник владеет статусом и полями окончательного ответа. Однако подсказку способен создать и кэширующий посредник. RFC 8297 описывает вариант, где он берёт поля из устаревшего ответа на время перепроверки, а затем передаёт сообщения источника.

Браузер владеет спекуляцией. Он может не действовать, использовать кэш, ограничить объём, поставить работу ниже в очереди или отказаться от повторного использования после перенаправления. Поле Link не управляет локальным планировщиком.

Финальный ответ владеет результатом навигации. У ресурса есть ещё один независимый итог: DNS, соединение, TLS, учётные данные, код ответа, тип, целостность и правила кэша должны дать пригодный объект.

RFC 8288 определяет ссылку через контекст, отношение, цель и атрибуты. Это утверждение о связи ресурсов, но не аутентификация цели и не обещание успешного обращения.

Браузер сужает протокольную возможность

Стандарт HTML применяет Early Hints при навигации. Текущий алгоритм обрабатывает первый ранний ответ и отбрасывает его, если затем происходит перенаправление между источниками.

На этой стадии используются только as, crossorigin, integrity и type. Для других атрибутов нужен уже созданный Document. Ранние ссылки рассматриваются до финальных и внутристраничных, однако порядок не равен старшинству.

Ранняя Content Security Policy может ограничить спекулятивный запрос. Финальная политика способна запретить документу использовать уже скачанный ответ. Переданные байты не покупают разрешения.

Стандарт Fetch вызывает обработку 103 и продолжает ждать окончательный ответ. Оптимизация остаётся частью одного запроса.

Старый кэш — опыт, а не текущая истина

Вчерашний Link может долго оставаться хорошим прогнозом. После выпуска, персонализации или смены маршрута он может ошибиться. Поэтому происхождение подсказки должно быть наблюдаемым.

Следует различать приложение, пограничное правило и устаревшие метаданные кэша. Ранний и финальный наборы полей — разные объекты доказательства. Если несколько слоёв выпускают варианты, дубликаты и противоречия нельзя прятать в суммарном счётчике.

Посредник предлагает скорость, клиент оценивает цену, источник завершает ответ. Ни один из них не наследует полномочия другого.

Цена становится реальной раньше смысла

Ненужная подсказка может открыть соединение, занять полосу и окно перегрузки, разбудить сторонний сервис, потратить батарею и раскрыть интерес к адресу. Последующий финальный ответ не возвращает отправленные пакеты.

Поэтому считать нужно использованную раннюю работу. Свяжите получение 103, более ранний старт, ответ сети или кэша, сравнение с финалом, прохождение политик и фактическое потребление документом. Выигрыш времени публикуется вместе с бесполезными байтами, запросами и соединениями.

Совместимость тоже требует фактов. RFC 8297 предупреждает: клиент HTTP/1.1, принявший 103 за финал, может неверно разделить последующие сообщения постоянного соединения и допустить межсайтовое раскрытие. Сервер может не использовать 103 по HTTP/1.1, если клиент неизвестен. HTTP/2 снижает именно риск кадрирования, но не делает прогноз верным.

Реестр IANA закрепляет за 103 название Early Hints. Он не доказывает передачу через посредника, действие браузера, использование ресурса или пользу читателю.

Принцип Lu Heng о минимальной общей спецификации и локальных решениях точно описывает границу: общее значение лишь сообщает о предварительных полях и будущем финале. Решение об оптимизации остаётся у работающей реализации. Первичность работающего кода требует проверить провод, действие клиента и результат.

Безопасный тест прост: отключение 103 может убрать скорость, но не корректность страницы. Иначе необязательная подсказка уже захватила власть над архитектурой.