ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
Nginx-ru mailing list archive (nginx-ru@sysoev.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: memcache_key и HTTP Accept-Language




Sergey Shepelev пишет:
Я к сожалению, не работал с map никогда, есть ньюанс, что бекенд может
отдать для

map - это в общем хеш. Ключом будет Accept-Language, значнием - некая переменная, которую уже к ключу приклеете.
http://sysoev.ru/nginx/docs/http/ngx_http_map_module.html


Accept-Language: en;q=0.9,ru;q=0.8

сейчас русский контент (потому что другого нет, несмотря на
предпочтение юзера), а через полчаса - английский, потому что клиент
добавил настройки для английского языка.
Это не помешает использовать map?

Задача map тут одна - свести 30+ разнообразных Accept-Language к меньшему количеству ключей. Т.е. если у нас поддерживается 4 языка, то сводим к четырем значениям. Так как в nginx нет встроенного средства получить из Accept-Language список языков в указанном приоритете, то приходится делать это руками. Второй вариант - парсить на встроенном перле и ставить эту переменную.

Далее, самый простой вариант - что бы для каждого из 4-х языков лежала нужная страница. Минусы - кеш увеличится в 4 раза,плюсы - не нужно делать fallback если страница в мемкеше не найдена. Так как с fallback до конца не ясно - а какой ключ запрашивать дальше.

Если падать всегда на дефолный язык, то проблем не будет, правда тогда получится косяк - запрашивает человек fr;q=0.5, en - а у нас в кеше нет en страницы, но есть fr... но после ошибки поиска en странцы мы падаем в дефаултный язык, который ru.

А как падать не на дефолтный, а на "следующий ожидаемый".. мне в голову пока не приходит.

ИМХО, тут самый красивый по быстродействию вариант будет перековырять сам мемкеш, что бы он сам определял, какой же ключ отдать на основе переданной строчки из Accept-Language.




 




Copyright © Lexa Software, 1996-2009.