Перейти к содержимому
10 / 13

Локали на CDN: как раздавать многоязычный фронтенд и не отдать чужой язык из кэша

Многоязычность ломает кэш там, где один URL отдаёт разный контент. Самая надёжная схема — язык в пути (/ru/..., /en/...): у каждого варианта свой URL, кэш работает без оговорок, ссылки делятся корректно, поисковые системы видят разные страницы. Схема с определением языка по заголовку Accept-Language на одном URL требует Vary: Accept-Language, а это почти обнуляет долю попаданий: значений заголовка десятки тысяч. Компромисс — определять язык только на корневом маршруте и делать редирект на языковой префикс, а весь остальной контент отдавать по явным путям. Дополнительно нужны: Content-Language в ответе, hreflang в разметке для поисковых систем, запоминание выбора в куке с явным приоритетом над автоопределением и корректная обработка ботов. Отдельная ловушка — редирект по стране на уровне CDN: он кэшируется и может «залипнуть» для целого региона.

Локали на CDN: как раздавать многоязычный фронтенд и не отдать чужой язык из кэша | JScriptiser