Nginx-ru mailing list archive (nginx-ru@sysoev.ru)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: как лучше управлять кешированием fastcgi cache
Вам правильно ответили, в первую очередь нужно читать документацию.
Возможно вы удивитесь но ваш конфиг по кешированию может и должен выглядить
намного короче, как-то так
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 mailing list
nginx-ru@xxxxxxxxx
http://mailman.nginx.org/mailman/listinfo/nginx-ru
|