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