Re: как лучше управлять кешированием fastcgi cache

S.A.N nginx-forum at nginx.us
Sun Dec 29 06:04:05 UTC 2013


Вам правильно ответили, в первую очередь нужно читать документацию.
Возможно вы удивитесь но ваш конфиг по кешированию может и должен выглядить
намного короче, как-то так

fastcgi_cache_lock on;
fastcgi_cache_revalidate on;
fastcgi_cache_methods GET HEAD;
fastcgi_cache_valid 200 301 302 0s;
fastcgi_cache_key "$host$uri$is_args$args";
fastcgi_cache_use_stale error updating http_503;

Програмить что-то более в конфиге Nginx не нужно, управлять кэшированием
нужно на стороне бекенда, это будет удобней и эффективней.
Т.е скрипты по адресу /admin /search, должны отдавать HTTP хедер
Cache-Control: no-store, это запретит кеширования на стороне Nginx и в
браузере клиента.

Скрипты по адресу /news /feed должны отдавать HTTP хедер Cache-Control:
max-age=600, это разрешит кешировать страницу на 10 минут (600 секунд),
таким образом кеш будет в браузере клиента и в Nginx, и браузер на
протяжении 10 минут, вообще не будет делать повторных запросов по этому uri,
а будет использовать свой локальный кеш, это намного быстрей чем гонять
контент по сети.

С куками тоже все просто, как правило проблема в том что в скриптах
используется session_start() всегда и везде, но эта функция автоматом
отправляет HTTP заголовки на запрет кеширования и куки с id сессии, функция
все делает правильно, просто вызывать её нужно только в тех скриптах которые
недолжны попадать в кеш, во всех остальных скриптах, функция session_start()
вызыватся не должна.

И советую не читать статьи, типа - Подводные камни при использовании
кэширования в nginx http://habrahabr.ru/post/72539/
К сожалению, в статье больше глупостей чем разумных вещей, если будите
читать документацию и пользоваться логикой, подводных камней в кэшировании
не будет и конфиг станет короче и управляемость кешем станет прозрачной а
главное само кэширования станет эффективней.

Да, насчет отрезать слеш в конце uri, лучше это тоже делать на стороне
бекенда, тогда редиректы которые сделал бекенд, соханятся в кеше Nginx и
повторные запросы со слешем в конце уже не будут приходить на бекенд, Nginx
сам ответит редиректом из своего кеша.

Posted at Nginx Forum: http://forum.nginx.org/read.php?21,245843,245896#msg-245896



Подробная информация о списке рассылки nginx-ru