Re: неблокирующий аплоад

Dmitry Dedukhin dedukhin at mail.ru
Fri Mar 29 05:39:35 UTC 2013


29.03.2013 3:08, Anatoly Mikhailov пишет:
> On Mar 28, 2013, at 8:30 PM, Валентин Бартенев <vbart at nginx.com> wrote:
>
>> On Thursday 28 March 2013 23:54:48 Andrey N. Oktyabrski wrote:
>>> On 28.03.2013 18:45, Валентин Бартенев wrote:
>>>> On Thursday 28 March 2013 16:34:21 Anatoly Mikhailov wrote:
>>>>> Вопрос по неблокирующему аплоаду больших файлов, в идеале без
>>>>> необходимости использовать проксирование на upstream.
>>>>>
>>>>> 2 варианта:
>>>>> 1) nginx-upload-module
>>>>> 2) lua-resty-upload
>>>>>
>>>>> Первый поломался с выходом nginx 1.3.9
>>>>> https://github.com/vkholodkov/nginx-upload-module/issues/41 Второй
>>>>> требует 2 дополнительных модуля (devkit, lua), но еще не
>>>>> production-ready
>>>>>
>>>>> Что выбрать?
>>>> Пользоваться штатными средствами.
>>>>
>>>> http://nginx.org/r/client_body_in_file_only/ru
>>> Вот бы штатными средствами было вот это реализовано, так можно было бы и
>>> пользоваться:
>>> http://www.grid.net.ru/nginx/resumable_uploads.ru.html
>>>
>> Сделать всякого можно, был бы только спрос.
> если хорошо задокументировать, то спрос будет обязательно,
> погуглив, можно только найти nginx_upload_module и lua модуль,
> но про client_body_in_file так просто не найдешь, хотя если покопать:
> - http://forum.nginx.org/read.php?2,223189,223198#msg-223198
> - http://forum.nginx.org/read.php?2,227175,227177
> - http://mailman.nginx.org/pipermail/nginx/2012-September/035447.html
>
> кстати, сейчас тестируем штатное решение - это то, что нужно, спасибо!

В случае multipart POST запроса и штатного решения бэкенд должен будет 
распарсить тело запроса из файла, также как и обычно.
В случае загрузки большого файла (речь идет про несколько гигабайт) 
парсинг может занять вполне ощутимое время, в течение которого браузер 
клиента будет ждать ответа.
Помимо всего прочего (подсчет хеш-сумм и возобновляемая загрузка) upload 
модуль хорош тем, что этот парсинг осуществляет на лету и на бэкенд 
приходит небольшое тело запроса с уже вычлененным из него файлом, что 
существенно  ускоряет время ответа клиенту и разгружает бэкенд.



Подробная информация о списке рассылки nginx-ru