On Wed, 30 Mar 2016, Alex Vasilenko wrote:

Приветствую!

Добрый вечер, Alex!

Есть контент, который кэшируется директивами fastcgi_cache:
...
Цель - кэшировать ответы в зависимости от языка в запросе Accept-Language
Собственно ответ следующего вида:

             ^^^^^
Вот тут у вас начинается недопонимание...

Насколько я понял из документации
<http://nginx.org/en/docs/http/ngx_http_fastcgi_module.html#fastcgi_cache_valid>
это
должно позволить переопределять и время кэширования и fastcgi_cache_key
будет немного другой и включит в себе хедеры в Vary.

*_cache_key может включать в себя лишь заголовки запроса; вы же хотите добавить в него заголовок из ответа бэкенда. Так не получится ;-)


Собственно и Cache-Control и Vary
заголовки игнорируются, кэшируется на минуту с первым попавшим языком.

Вот здесь вы близки к пониманию происходящего, и к решению.

Что я не так делаю?

Вам надо добавить в fastcgi_cache_key заголовок "Accept-Language" из запроса, как-то так:

fastcgi_cache_key
"$request_method|$http_if_modified_since|$http_if_none_match|$host|http_accept_language|$request_uri";

Но будьте готовы к разрастанию кеша, потому что запросы к одному URI но с
чуть разными заголовками
  Accept-Language="ru,ru-RU;q=0.7,en;q=0.3"
и
  Accept-Language="ru;q=0.7,en;q=0.3"

создадут 2 разных файла в кеше.


--
Best regards,
Andrey Kopeyko <and...@kopeyko.ru>
_______________________________________________
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Ответить