proxy_cache & multipart/multiply requests

Igor Sysoev is at rambler-co.ru
Wed May 20 13:29:44 MSD 2009


On Wed, May 20, 2009 at 12:26:37PM +0300, Aleksej Novikov wrote:

> Hello Igor,
> 
> Извинте за на зойливость, но я хотел бы уточнить.
> 
> 
> 1.Правильно  ли  я понял, что в описаном мною случае, в реальности будет
> качатся  только  первый  запрос  к  файлу  из  всех 10 запросов. А все
> остальные  из-за того что range запрос убран качатся не будут. То есть
> по сути nginx будет возвращать что не поддерживется дакачка ?

Если будет 10 одновременных запросов, то все 10 уйдут бэкенду, потому
пока нет busy lock'ов. Но клиентам будет отдан не весь ответ, а только
тот кусок, который они просили.

> 2.  Если  файл  уже  лежит  в кеше, тогда nginx позволит его скачать в
> несколько запросов ?

Да.

> 
> Спасибо!
> 
> 
> Wednesday, May 20, 2009, 12:04:51 PM, you wrote:
> 
> > 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 и поэтому получает полной ответ. Клиенту
> > при этом отдаются запрашиваемый кусок при получении от бэкенда.
> > Когда ответ полностью получен, он попадает в кэш и потом отдаётся из кэша.
> 
> 
> 
> 
> 
> -- 
> Best regards,
> Aleksej             
> ICQ:    293-686-24
> GSM:371-293-686-24
> 

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





More information about the nginx-ru mailing list