Summary
- RFC 2068, опубликованный в январе 1997 года, описывал
Accept-Language: браузер мог перечислить приемлемые языки с весами предпочтения. - Когда сервер выбирал версию по этому полю, ответ с
Vary: Accept-Languageсообщал кешу, что при следующем запросе нужно сравнить языковое условие прежде, чем повторно выдать сохранённую страницу.
В RFC 2068 за январь 1997 года есть почти ресторанный заказ: сначала датский, затем британский английский, после — прочий английский. Числа q уточняют предпочтения. Браузер отправляет этот список вместе с адресом, а сервер получает возможность сразу подобрать подходящую страницу. Читателю не требуется вначале открывать отдельное меню языков.
Проблема начинается, когда ответ сохраняет общий кеш. Два человека запрашивают /news. Один предпочитает датский, другой — французский. Сервер может выдать разные тексты по одному и тому же URL. Если кеш запомнил только URL, у него есть готовая страница, но потеряна причина выбора этой версии. Следующему гостю достанется первое попавшееся издание с правильным адресом и неправильным языком.
HTTP добавил пометку Vary. Современный RFC 9110 объясняет: Vary: accept-language отмечает поле запроса, повлиявшее на выбор ответа. RFC 9111 о кешировании обязывает сравнить отмеченные поля с исходным запросом; при несовпадении сохранённый ответ нельзя использовать без повторной проверки. Кеш вправе хранить датскую страницу, но рядом должна лежать карточка с объяснением, кому она предназначалась.
В RFC 9111 описана и прозаическая ошибка: на ответе по умолчанию забыли Vary. Тогда кеш может выбирать эту версию и для дальнейших запросов, хотя доступно более подходящее языковое издание. Никакого сбоя перевода не нужно. Достаточно снять табличку с полки и позволить быстрому работнику действовать вслепую.
Поле Content-Language характеризует языковую аудиторию уже отправленного содержимого. RFC 9110 разводит три смысла: Accept-Language сообщает о предпочтении, Content-Language — о доставленной версии, Vary — об условии её дальнейшей выдачи. Когда эти шаги различимы, ошибку можно искать в конкретном месте маршрута.
Браузер тоже не всегда говорит от имени того, кто сейчас сидит за экраном. Руководство W3C по языковому согласованию приводит пример чужого браузера с прежними настройками и советует видимые переключатели языка. Ещё RFC 2068 отмечал, что полный список предпочтений в каждом запросе раскрывает личные сведения. Нынешний стандарт сохраняет управление этим списком за пользователем.
У веба получилась система обслуживания с четырьмя работниками: браузер предлагает, сервер выбирает, кеш хранит схему рассадки, а читатель может попросить другое издание. Скорость полезна только тогда, когда она обслуживает правильного человека.
Обзор для участников
Подробный контекст профиля
Войдите с подходящим уровнем подписки, чтобы открыть полный обзор и примечания к источникам.
Только для Стратегического сообщества
Стратегическое сообщество
Открыто всем читателям. Вступите и войдите, чтобы открыть обзоры профилей.
Вступить в Стратегическое сообществоТолько для Альянса лидеров
Альянс лидеров
Для проверенных владельцев IP-активов и руководителей. Войдите, чтобы открыть обзоры Альянса.
Вступить в Альянс лидеров





