Nginx-ru mailing list archive (nginx-ru@sysoev.ru)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Кэширование в шар ед-меме
On 04.10.2006 1:04, drmarker wrote:
>
> Но, вообще, если запрос ушел к BE, то проще, как вы правильно сказали,
> из BE сразу отдать ответ, чем redirect. Пусть даже и redirect на
> shared cache. КМК.
Вы что-то недопоняли.
Кэш полезен, если ответ есть функция от данных где-то в БД (или
генерация ответа занимает много времени).
Если мы полагаем, что такие запросы частые, то за счёт кэширования мы
экономим на запросах к БД (как самых тяжелых), а то, что запрос сначала
идёт к BE, а потом nginx по его наводке берет из memcached - это куда
меньше времени занимает. Вот эта экономия на запросах к БД и даёт самый
большой выигрыш, а два запроса (к backend и memcached) - это ерунда.
> А для такого тупого кеширования на BE хватает и mod_cache.
Этого хватит только в самых тривиальных случаях. А если несколько
backend'ов - тогда нет. И, опять же, к mod_cache нельзя обращаться из
perl modules, нельзя внешним образом добавлять в него контент и т.д. Он
просто хуже :)
> Но хочется ведь другого решения :)
>
> Типа nginx отдает то, что находит в кеше. Если не находит - запрос на
> BE, BE кладет ответ в кеш с expire, FE его оттуда подхватывает и
> отдает, пока не expire. Красиво!
Здесь тонкость в том, как создать ключ для кэша.
Если это тупо $uri$args - то уже сейчас можно сделать, через комбинацию
location и error_page.
Собственно, как я уже писал ранее, идеально было бы сделать функции в
string expansion в стиле exim, типа "${md5{$args}}".
Либо написать свой модуль.
--
Sergey Skvortsov
mailto: skv@xxxxxxxxx
|