borNfree
@borNfree
PHP developer

Можно ли кешировать мультиязычный сайт с Reverse Proxy без языка в URL?

Сайт поддерживает 3 языка, информация о выбранном пользователем языке хранится в Cookies. То есть, зайдя на страницу /about и меняя язык сайта, пользователь всегда будет на URL /about, никаких префиксов языка не добавляется.

Теперь нужно реализовать кеширование с использованием ReverseProxy (например Varnish или SymfonyReverseProxy).

Как только первый пользователь заходит на сайт, кешируется вся страница с языком EN (по дефолту). Дальше переключение языка не работает, т.к. Varnish изменения в URL не видит, да и URL не меняется же.

Вопрос - как решать такую проблему? Можно ли это обойти?
Погуглив, увидел советы что лучше все-таки указывать в URL язык:
/en/about
/ru/about
/be/about

Тогда Varnish будет кешировать все правильно, и переключение языков заработает вновь.
На сколько я понял, хедер Vary: Accept-language не может здесь помочь, так как он устанавливается браузером и при смене языка через Cookies остается неизменным.

Буду рад советам, спасибо.
  • Вопрос задан
  • 288 просмотров
Пригласить эксперта
Ответы на вопрос 3
WarGot
@WarGot
Автор не пробовал посмотреть какие евенты есть у прокси, наверное есть читать\писать кеш, можно ли повесить лисенер который будет перед чтением, перед записью примешивать к имени кеша язык из куков ?
Ответ написан
borNfree
@borNfree Автор вопроса
PHP developer
Решил охватить большую аудиторию, так как вопрос не гуглится вообще: stackoverflow.com/questions/29907496/is-it-possibl...

Предлагайте варианты решения :)
Ответ написан
Комментировать
prototype_denis
@prototype_denis
Symfony
Раз вы не хотите языка в url, так переводите его на клиенте.
materializecss.com хороший пример этому.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы