Кэширование с лакомами и изменяясь в пользовательском наборе заголовков HTTP - PullRequest
2 голосов
/ 29 ноября 2011

Я занимаюсь разработкой вашего стандартного сайта электронной коммерции с высоким трафиком и хочу настроить кэширование с помощью Varnish. Особенностью этой настройки является то, что приложение будет возвращать различное содержимое в зависимости от конкретного местоположения пользователя.

Итак, мои планы таковы:

  • Настройте Nginx с модулем GeoIP, чтобы я мог получить заголовок X-Country: XX для всех запросов, поступающих в бэкенды приложения.
  • Настройте приложение Rails так, чтобы оно всегда возвращало заголовок ответа «Vary: X-Country».
  • Поместите сервер Varnish за Nginx и бэкэнды приложения, чтобы он мог кэшировать несколько версий объектов, обслуживаемых Rails, и обслуживать их на основе заголовков запросов, установленных Nginx (, а не клиентского браузера )

У кого-нибудь есть опыт работы с такой установкой? Что-нибудь, о чем я должен знать?

1 Ответ

1 голос
/ 29 ноября 2011

Если поиск в GeoIP идет медленно и / или вы хотите, чтобы люди могли переопределить настройку страны, вы можете использовать страну cookie и проверить его на внешнем интерфейсе Varnish.

  • Если файл cookie для страны отсутствует, перешлите запрос в ваш сервер nginx для поиска GeoIP.Nginx выполняет перенаправление с заголовком Set-Cookie: country=us.Если вы хотите избежать перенаправлений и поддерживать клиентов / роботов, отказывающихся от файлов cookie, ngingx может переслать его в Rails и все же попытаться установить cookie страны в ответе.Или Varnish может перехватить ответ на перенаправление и выполнить «перезапуск» с недавно установленным cookie-файлом и перейти к фону
  • . Если у вас уже есть cookie-файл страны, используйте его в своем хэше Varnish

Если Rails может разрешать GeoIP, вам не нужен Ngingx, за исключением случаев, когда вы используете его для обслуживания файлов ...

...