proxy_cache & multipart/multiply requests
Igor Sysoev
is at rambler-co.ru
Wed May 20 13:04:51 MSD 2009
On Wed, May 20, 2009 at 01:21:23AM +0300, Aleksej Novikov wrote:
> Уважаемый, Игорь!
>
> Подскажите пожалуйста как поведёт себя модуль proxy_cache в следующей
> ситуации.
>
> От клиента приходит запрос на проксированный локейшн нжинкса на
> скачивание файла. При это запрос приходит на скачивание файла кусками,
> так как это делают программы качалки, разбивая файл на несколько
> частей. Понятное дело что УРЛ один и тот-же.
>
> Предположим что пришли запросы на скачку файла разбитого на 10 частей,
> все они передались на проксированный локейшн и началось скачиване.
>
> В этот момент, от другого пользователя приходит запрос на скачивание
> этого же файла, но разбитого на 5 частей.
>
> Будет ли уже скачанная и закешированная нжинксом часть данного фала
> отдана из кеша или будет сделан новый запрос на бекенд и файл будет
> тянутс с бекенда паралелно для двух пользователей в 10+5=15 потоков.
>
> И второй случай. Первый пользователь начал качать в 10 потоков, и в
> этот момент коннект оборвался, и он перезапросил скачивание каждой из
> 10 частей с той позиции где это оборвалось. Будут ли сделаны запросы
> на бекенд с текущей запрошенной позиции и по окончани скачивания в
> кеше нжинкса будет лежать целый запрошенный с бекенда файл или же
> будет произведена перекачка всего файла с бекенда целиком.
Если ответ может быть закэширован, то nginx убирает из запроса бэкенду
заголовки Range и If-Range и поэтому получает полной ответ. Клиенту
при этом отдаются запрашиваемый кусок при получении от бэкенда.
Когда ответ полностью получен, он попадает в кэш и потом отдаётся из кэша.
--
Игорь Сысоев
http://sysoev.ru
More information about the nginx-ru
mailing list