ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
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




 




Copyright © Lexa Software, 1996-2009.