Заголовок Vary: Accept-Language служит четкой инструкцией для веб-кешей и поисковых систем, указывая на то, что содержимое страницы меняется в зависимости от языковых предпочтений запрашивающего браузера. Включая этот заголовок в свой HTTP-ответ, вы гарантируете, что серверы кешируют различные версии страницы для разных языковых групп, предотвращая ситуации, когда пользователь во Франции получает кешированную англоязычную страницу. Эта техническая настройка является обязательным условием для поддержания точной международной поисковой индексации.
Почему заголовок Vary важен для поисковых систем?
Поисковые системы отдают приоритет доставке наиболее релевантного контента на предпочитаемом пользователем языке. Когда ваш сервер использует один и тот же URL для предоставления разных языковых версий в зависимости от настроек браузера, заголовок Vary служит ориентиром для краулеров. Без него CDN или кеш может сохранить одну версию вашей страницы и показывать её всем независимо от их языковых настроек. Это мешает Google правильно индексировать различные языковые версии вашего контента, так как краулер может увидеть только ту версию, которую вернул кеш.

Когда Googlebot сталкивается с URL, который отвечает по-разному в зависимости от заголовков, сигнал Vary подтверждает, что ответ не является статической ошибкой или случайностью. Он сообщает поисковой системе, что вариация является намеренной. Без этого поисковая система может ошибочно предположить, что на сайте есть дублирующий контент, или, что еще хуже, проиндексировать неверный языковой вариант в качестве канонической версии для всех регионов.
Рассмотрим сценарий, когда пользователь просматривает сайт из Японии с английскими языковыми настройками в браузере. Если ваш сервер не настроен на отправку заголовка Vary: Accept-Language, кеш может выдать японскую версию страницы на основе IP-адреса пользователя, даже если его языковые предпочтения в браузере явно указывают на английский язык. Правильная настройка заголовков разрешает этот конфликт между местоположением на основе IP и заданными пользователем языковыми предпочтениями.
Как кеширование на стороне сервера взаимодействует с языковыми заголовками?
Уровни кеширования часто плохо справляются с международными сайтами, так как они обычно кешируют данные только на основе URL. Если ваш сайт предоставляет контент на основе заголовка запроса Accept-Language, кеш должен знать об этой зависимости. Если заголовок отсутствует, кеш считает все запросы идентичными, что приводит к некорректной выдаче контента. Это создает узкое место, когда первый посетитель из определенного региона определяет, что видят последующие посетители.

Современные CDN поддерживают нормализацию ключа кеша. Вы должны убедиться, что ваш ключ кеша включает значение заголовка Accept-Language в качестве параметра. Если ваш сервер отправляет заголовок Vary: Accept-Language, но ваша CDN игнорирует его, CDN все равно будет выдавать кешированную версию от первого посетителя страницы. Это распространенная точка отказа, которая приводит к ухудшению пользовательского опыта для международной аудитории.
- Настройте ваш исходный сервер на отправку ‘Vary: Accept-Language’ в заголовке ответа HTTP.
- Убедитесь, что ваша CDN поддерживает заголовки Vary и настроена на включение этого заголовка в ключ кеша.
- Проверьте заголовки ответа с помощью инструментов разработчика в браузере или инструментов командной строки, таких как curl.
- Мониторьте логи вашего сервера, чтобы убедиться, что запросы на разных языках попадают в правильные версии кеша.
- Убедитесь, что содержимое вашего сайта действительно меняется при наличии заголовка.
Каковы распространенные ошибки при внедрении языковых заголовков?
Многие разработчики забывают, что заголовок Vary должен отправляться для каждой языкозависимой страницы. Другая распространенная ошибка — не убедиться в том, что контент действительно меняется при наличии заголовка. Если содержимое остается прежним, добавление заголовка Vary создает ненужную фрагментацию в кеше, что замедляет работу вашего сайта и без необходимости увеличивает нагрузку на исходный сервер.
Еще одна ошибка заключается в чрезмерном усложнении строки Vary. Включение слишком большого количества заголовков, таких как ‘Vary: Accept-Language, User-Agent, Cookie’, может привести к низким коэффициентам попадания в кеш. Сохраняйте заголовок Vary строго сфокусированным только на языке, если это единственный динамический фактор. Кроме того, избегайте использования заголовка Vary, если ваш сайт построен на статической структуре, где каждый язык имеет свой собственный уникальный URL, так как в такой архитектуре он не нужен.
Устранив эти технические пробелы, вы гарантируете, что Google направляет посетителей на контент, соответствующий их конкретному местоположению и языковым настройкам.
Google Search Central
Как Alien Road применяет заголовки Vary
В Alien Road мы следуем строгому протоколу при управлении международными проектами. Мы начинаем с аудита текущих заголовков ответа сервера для всех региональных поддоменов и вложенных папок. Затем мы настраиваем определение языка на стороне сервера для корректного сопряжения с заголовком Vary, гарантируя правильную индексацию контента наших клиентов ботом Googlebot. Мы не ограничиваемся одной лишь настройкой; мы проверяем эти параметры с помощью симулированных запросов из различных международных локаций, чтобы убедиться, что кеш ведет себя должным образом.
Например, при типичной работе с глобальным клиентом в сфере электронной коммерции мы сначала размечаем все языковые пути. Затем мы тестируем заголовки в тестовой среде (staging), чтобы убедиться, что CDN правильно разделяет кеш. После подтверждения мы внедряем изменения небольшими порциями, отслеживая отчет ‘Статистика сканирования’ в Google Search Console, чтобы убедиться, что Googlebot по-прежнему может получать доступ ко всем языковым версиям сайта без попадания в циклы перенаправления.
- Проведите аудит существующих заголовков HTTP для всех глобальных версий сайта.
- Внедрите согласованные сигналы Vary: Accept-Language на уровне исходного сервера.
- Проверьте конфигурации ключей кеша CDN, чтобы включить языковые заголовки в качестве уникального идентификатора.
- Выполните межрегиональное тестирование с использованием VPN для подтверждения точности доставки контента.
- Изучите логи сканирования, чтобы убедиться, что Googlebot не заблокирован из-за неверных настроек кеша.
Как проверить вашу реализацию на этой неделе
Вы можете начать с использования вкладки Сеть (Network) в инструментах разработчика вашего браузера для проверки заголовков ответа ваших целевых страниц. Найдите поле ‘Vary’ и убедитесь, что оно содержит ‘Accept-Language’. Если вы обнаружили его отсутствие, согласуйте с вашей командой инженеров обновление конфигурации сервера или пограничных правил вашей CDN. Это простое изменение повышает надежность вашей стратегии международного SEO и предотвращает ошибки индексации.
Запустите тест с помощью такого инструмента, как curl в терминале: ‘curl -I -H “Accept-Language: fr” https://example.com/’. Изучите вывод на наличие заголовка Vary. Выполнив эту проверку для разных языковых строк, вы сможете подтвердить, что ваш сервер отвечает кешу правильными инструкциями. Это наиболее эффективный способ убедиться, что ваш сайт готов к работе с глобальной аудиторией.