proxy_cache, особенности

Alex Mizrahi alex.mizrahi at gmail.com
Fri May 15 20:15:57 MSD 2009


hi

возникло желании кэшировать некоторые ответы бэкенда, т.к. бэкенд
на некоторые запросы отвечает долго и не поддерживает большого
кол-ва одновременных соединений. насколько я понимаю, это можно
сделать посредством proxy_cache, но хотелось бы уточнить некоторые
особенности..

1. если приходят несколько запросов на один и тот же url, оно отправит
их всех на backend или дождётся пока получит один ответ?

более подробно, что я имею в виду, ситуация такая: некоторые запросы
нужно кэшировать на очень небольшое время, ну положим, 10 секунд, т.к.
информация в них постоянно обновляется, и в то же время на них может быть
большой "спрос", положим 50 запросов в секунду и backend вычисляет
ответ довольно долго, положим, 1 секунду. (понятное дело, если отправить
все запросы на backend, он загнётся, ну, для этого мы и кэшируем.)
значит каждые 10 секунд или вроде того объект устаревает и запрос идёт
на backend.

вопрос: в течении той секунды что вычисляется ответ на запрос,
пошлёт ли nginx остальные 49 запросов на backend, или будет ждать пока
не прийдёт ответ на первый запрос и отошлёт всем 49 что накопилось за
это время кэшированный ответ?

(понятное дело, что бороться с этой проблемой можно улучшая backend,
но определённо эту проблему проще решить спомощью proxy.)

2. вообще по поводу быстро-устаревающих объектов, есть ли какие-то
ограничения или особенности? я так думаю чтобы винт зря записью не
напрягать, лучше кэш разместить где-нибудь в районе /tmp..

with best regards, Alex 'killerstorm' Mizrahi. 






More information about the nginx-ru mailing list