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

Maxim Dounin mdounin at mdounin.ru
Thu Dec 26 15:43:14 UTC 2013


Hello!

On Thu, Dec 26, 2013 at 06:14:05PM +0300, VovansystemS wrote:

[...]

> > Если нужна обработка одним и тем же index.php, то в нужных
> > location'ах явно указывать SCRIPT_FILENAME.
> вынес в отдельные location'ы то, что требует особых параметров
> кеширования, а сами настройки кеширования теперь задаются на уровне
> server.

Лучше ещё переделать конфиг так, чтобы fastcgi_cache был включён 
только там, где используется.

Ибо если кеш выключен - это одно, а если он включён, но ему 
сказали bypass / no cache - это немного другое.  В частности, при 
обработке HEAD-запросов, а равно условных запросов будут различия 
(при включённом кеше на бекенд вместо HEAD уйдёт GET, а If-* 
заголовки будут убраны).

> > Лучше - по возможности избегать использование if'ов и rewrite'ов.
> 
> А вот как убирать слэши в конце URI без rewrite я не смог придумать
> (так, чтобы было перенаправление на URI без слэша) - есть ли какое-то
> иное решение?

Такие вещи лучше всего делать внутри приложения, а не на конфигах 
nginx'а.

> Также не совсем понятно, как избавится от if, когда на то, нужно ли
> кешировать (отдавать закешированный) контент, влияет несколько
> факторов (есть ли определённая кука ИЛИ метод запроса post ИЛИ есть
> аргументы (например)). Возможно ли и стоит ли переписать это на map'ы
> и как это будет выглядеть? Как бы сделали Вы?

И такие вещи лучше всего делать в рамках приложения, возвращая 
корректные значения Cache-Control.

Впрочем, если речь идёт про fastcgi_no_cache / 
fastcgi_cache_bypass, то следует иметь ввиду, что эти директивы 
принимают несколько параметров.  Подробнее тут:

http://nginx.org/r/fastcgi_no_cache/ru
http://nginx.org/r/fastcgi_cache_bypass/ru

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



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