Welcome! Log In Create A New Profile

Advanced

Re: nginx fastcgi_cache и Vary headers

Maxim Dounin
March 30, 2016 03:36PM
Hello!

On Wed, Mar 30, 2016 at 09:41:59PM +0300, Andrey Kopeyko wrote:

> On Wed, 30 Mar 2016, Alex Vasilenko wrote:

[...]

> >Собственно и 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 разных файла в кеше.

Начиная с версии 1.7.7 nginx умеет сам смотреть на заголовок Vary,
возвращаемый в ответе бекендом, и учитывать его при кешировании,
при необходимости создавая для разных вариантов ресурса
производные ключи и кеш-файлы, http://nginx.org/ru/CHANGES.ru:

*) Изменение: теперь nginx учитывает при кэшировании строку "Vary" в
заголовке ответа бэкенда.

От разрастания кеша это, конечно, не спасёт, но должно работать
само. (Чтобы кеш не разростался сверх необходимого - нужно знать
логику выбора представления на бекенде, и повторить её в рамках
создания ключа кеширования, других вариантов просто нет.)

Судя по тому, что "и Cache-Control и Vary заголовки игнорируются" -
проблему стоит искать где-то в районе конфига, там скорее всего
кто-то написал fastcgi_ignore_headers как минимум со значениями
Cache-Control, Expires и Vary.

(Отдельно отмечу, что нескольких заголовков Vary в ответе -
плохая идея, nginx использует последний из них. Но в данном
случае проблема явно не в этом, т.к. Cache-Control также
игнорируется.)

--
Maxim Dounin
http://nginx.org/

_______________________________________________
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru
Subject Author Posted

nginx fastcgi_cache и Vary headers

mente March 30, 2016 01:24PM

Re: nginx fastcgi_cache и Vary headers

Andrey Kopeyko March 30, 2016 02:44PM

Re: nginx fastcgi_cache и Vary headers

Maxim Dounin March 30, 2016 03:36PM

Re: nginx fastcgi_cache и Vary headers

mente March 30, 2016 05:04PM

Re: nginx fastcgi_cache и Vary headers

Maxim Dounin March 31, 2016 11:52AM



Sorry, only registered users may post in this forum.

Click here to login

Online Users

Guests: 158
Record Number of Users: 8 on April 13, 2023
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready