Способ кэширования

Igor Sysoev is at rambler-co.ru
Sat Dec 18 13:36:27 MSK 2004


On Sat, 18 Dec 2004, Andrew Velikoredchanin wrote:

> Мне нужно получить следующее.
>
> 1. Юзер обращается к фронтэнду, что-бы получить информацию.
> 2. Фронтэнд запрашивает ее у бэкенда.
> 3. На бэкенде запускается некоторый скрипт в одном из потоков апача.
> 4. Скрипт быстро отрабатывает и быстро отдает данные фронтэнду.
> 5. Фронтэнд быстро забирает эти данные, закрывает соединение с бэкендом
> и начинает медленно их передавать клиенту.
> 6. В это время поток апача который обрабатывал этот запрос уже
> становиться свободным для других запросов.
>
> Это сделать реально? Что для этого требуется? Я так понимаю, что кэшь на
> фронтэнде должен быть такой что-бы в него целиком помещался ответ с
> бэкенда? В nginx для такой работы какой размер нужно сделать
> соответствующим - размер одного буфера в проксе или общий размер всех
> буферов?

Именно так nginx и работает.
Первая часть ответа бэкенда принимается в буфер размером
proxy_header_buffer_size. Затем ответ принимается в буфера, заданные в
proxy_buffers. Эти буфера выделяются по мере необходимости, то есть,

proxy_buffers  256 32k;

означает, что при чтении ответа может быть использовано до 256 буферов
размером по 32К. Но если ответ меньше, то и выделено будет меньше.
По получении ответа он отдаётся клиенту частями не более
proxy_busy_buffers_size. Если же все буфера заняты, а клиент не принимает
ответ, то ответ пишется во временный файл.


Игорь Сысоев
http://sysoev.ru





More information about the nginx-ru mailing list