This is a mirror of official site: http://jasper-net.blogspot.com/

Silverlight + nginx = возобновляемая загрузка файлов в браузере

| Sunday, September 5, 2010
В данной статье рассматривается опыт внедрения Silverlight-клиента для организации возобновляемой загрузки файлов на проекте Файлы@Mail.Ru.

Зачем это нужно? Думаю, не нужно рассказывать, что загрузку файлов на сервер и их хранение сейчас предоставляет очень большое количество веб-проектов, от небольших до очень крупных. Причем загрузка обычно реализована в виде обычного <input type=file/>, реже — с помощью Flash, еще реже — иными средствами (загрузку по FTP в данной статье мы не рассматриваем).

Проблема состоит в том, что протокол HTTP изначально текстовый и для передачи больших объемов бинарных данных не очень приспособлен. Отсюда вытекает, что при обрыве связи у пользователя, перезагрузке компьютера и тому подобных факапах наполовину переданный файл приходится начинать загружать заново, а в случае с медленным каналом это превращается в настоящее издевательство.

Что делать?

Как мы дошли до такой жизни

Появление первых слухов о новой версии Adobe Flash 10 с поддержкой метода FileReference.load() для чтения содержимого файла нас воодушевило. Но не тут-то было: Adobe всех «перехитрил». Метод FileReference.load() полностью загружает все содержимое файла в память компьютера, тем самым «подвешивая» машину при попытке прочитать большой файл (в экспериментах «большим» уже оказывался файл примерно 500 МБ на компьютере с 2ГБ ОЗУ). Кроме того, Flash не поддерживает файлы размером более 2ГБ.

Мы были опечалены и разочарованы. К тому же насущно требовалась поддержка частичной загрузки с серверной стороны, а делать её самим было лень.

И вот однажды мы подумали: «А давайте посмотрим на Silverlight, может он нам даcт нечто большее, чем Flash?» — и не ошиблись.

В Silverlight работа с файлами реализована более грамотно и доступно, чем в Flash — мы можем читать выбранный пользователем в диалоге файл по произвольному смещению буферами произвольного размера. При этом размер файла в Silverlight ограничен 64-битным числом, т.е. мы можем загружать файлы практически бесконечного размера (теоретически до 16 384 ПБ).

К тому же, в репозитории Валерия Холодкова (если вдруг кто-то не знает, то это автор отличного модуля nginx_upload_module для загрузки файлов) появилась и неспешно развивалась ветка, называющаяся partial-upload, одно название которой приводило нас в благоговейный трепет.

Read more: Habrahabr.ru

Posted via email from .NET Info

2 comments:

Anonymous said...

Отношения у нас портятся из-за такого, что у нее есть еще одна подруга близкая и у меня другие подруги. Когда она мне что то расказывает про то как они провели сообща время(просто пили,болтали) меня терзает ревность и также самое я замечаю у нее,когда я что то рассказываю про себя с другими подругами. При этом мы друг друга любим, и про ревность не заикаемся, но выхода я не вижу. Как сделать так для того ревности не было? Нам по 25 лет.

[url=http://2nt.ru/go/serial.php]Вообще любой сериал и особенно новинки я качаю тут [/url]
[url=http://2nt.ru/go/teets.php]Молодежное видео тут[/url]

Anonymous said...

Как говорилось на Seexi.net Я точно знаю только про Георгия Вицина и Вячеслава Невинного, что оба не пили и не курили. Очень хочется знать, а кто ещё из всенародных любимцев и легенд советского кино буквально не пил