Главная
Форум
Контакты
Купить
Поддержи проект
Поиск
Искать:
Расширенный поиск
[Закрыть]
Правила форума
Войти
Регистрация
Russian
English
HandyCache форум
Главная категория
»
Новые предложения
»
Докачка файлов и загрузка по частям
Имя пользователя:
1 час
1 день
1 неделя
1 месяц
Навсегда
Пароль:
Страниц: [
1
]
2
3
...
7
Вниз
« предыдущая тема
следующая тема »
Отправить эту тему
Печать
Автор
Тема: Докачка файлов и загрузка по частям (Прочитано 150817 раз)
0 Пользователей и 1 Гость смотрят эту тему.
DenZzz
Модератор
Репутация: +179/-11
Offline
Сообщений: 5589
Докачка файлов и загрузка по частям
«
:
15 января 2007, 23:44:08 »
Эта тема уже ни раз всплывала на ру-борде, но потом благополучно забывалась...
Суть такова: если сервер или провайдер (плохая связь и т.п.) внезапно разорвали соединение во время закачки файла, то при следующей попытке не начинать качать файл с начала (как сейчас!), а попытаться его докачать с того места, где закачка была прервана!
Тогда во многих случаях и менеджер закачек не понадобится!
А пользователи на плохих каналах получат дополнительную экономию трафика!
Естественно, динамический контент докачать не получится. А вот картинки, архивы, музыку и т.п. известной длины - вполне!
Вроде и
mai62
был не против этой идеи...
Давайте подумаем и обсудим, нужна ли такая опция и как ее лучше реализовать!
«
Последнее редактирование: 27 февраля 2011, 15:35:12 от DenZzz
»
Сообщить модератору
Записан
Сергей
Beta tester
Репутация: +9/-2
Offline
Сообщений: 621
Re: Докачка файлов
«
Ответ #1 :
16 января 2007, 09:03:52 »
Конечно нужна.
Обсуждали не раз и алгоритм один уже предлагался.
Суть в том, чтобы сохранять запросы Partial Content тоже, и склеивать на лету.
Сообщить модератору
Записан
Сергей
Beta tester
Репутация: +9/-2
Offline
Сообщений: 621
Re: Докачка файлов
«
Ответ #2 :
16 января 2007, 09:15:34 »
К именам фрагментов лучше добавлять просто информацию о месте его в полном файле.
Например, дописывать такую строчку
#305806
Так мы узнаем, что фрагмент начинается с позиции 305806 байт от начала.
Длину фрагмента узнаем по размеру файла с этим фрагментом.
Фрагмент начинающийся с нулевой позиции называем так-же как и сейчас: file
.new
или лучше file
#0
Если это будет реализовано, я съэкономлю кучу трафика на Windows Update.
Цитировать
Сколько же там кусочков будет, тысячи?
Да. Но, как правило, кусочки идут по порядку. Тогда можно их на лету склеивать. Т.е. дописывать в концы файлов а не создавать новые.
«
Последнее редактирование: 16 января 2007, 09:19:31 от Сергей
»
Сообщить модератору
Записан
Rick
Администратор
Репутация: +15/-1
Offline
Сообщений: 868
Re: Докачка файлов
«
Ответ #3 :
16 января 2007, 09:51:16 »
Цитировать
Суть такова: если сервер или провайдер (плохая связь и т.п.) внезапно разорвали соединение во время закачки файла, то при следующей попытке не начинать качать файл с начала (как сейчас!), а попытаться его докачать с того места, где закачка была прервана!
1. Этим же занимается программа (браузер) запросившая файл.
2. А что делать с недокачанными обрывками остановленых и так и не возобновленных загрузок? Будут лежать мертвым грузом в кэше до очистки?
Сообщить модератору
Записан
Сергей
Beta tester
Репутация: +9/-2
Offline
Сообщений: 621
Re: Докачка файлов
«
Ответ #4 :
16 января 2007, 10:02:42 »
Цитировать
1. Этим же занимается программа (браузер) запросившая файл
Чем? Кэшированием? С какого перепугу?
Цитировать
2. А что делать с недокачанными обрывками остановленых и так и не возобновленных загрузок? Будут лежать мертвым грузом в кэше до очистки?
А что сейчас происходит с недокачанными кусками
.new
?
Тоже нерешенный вопрос. Сейчас они не удаляются но и не докачиваются потом.
Сообщить модератору
Записан
Rick
Администратор
Репутация: +15/-1
Offline
Сообщений: 868
Re: Докачка файлов
«
Ответ #5 :
16 января 2007, 10:17:10 »
Цитата: Сергей от 16 января 2007, 10:02:42
Чем? Кэшированием? С какого перепугу?
Хоть убей, не вижу в цитате на которую я отвечал слова "кэш" и производных от него.
Цитировать
А что сейчас происходит с недокачанными кусками
.new
?
Тоже нерешенный вопрос. Сейчас они не удаляются но и не докачиваются потом.
Т.е. проблема только усугубится увеличением таких обрывков? А есть предложения по решению?
Сообщить модератору
Записан
Сергей
Beta tester
Репутация: +9/-2
Offline
Сообщений: 621
Re: Докачка файлов
«
Ответ #6 :
16 января 2007, 10:26:08 »
Цитата: Rick от 16 января 2007, 10:17:10
Хоть убей, не вижу в цитате на которую я отвечал слова "кэш" и производных от него.
Докачка с места разрыва подразумевает сохранение в кэше (кэширование) скачанных данных.
Цитата: Rick от 16 января 2007, 10:17:10
Т.е. проблема только усугубится увеличением таких обрывков? А есть предложения по решению?
Проблема как раз разрешится. Сейчас фрагменты лежат мертвым грузом. А тут они пойдут в дело. И будет их не много а по одному фрагменту на каждый файл.
Сообщить модератору
Записан
Rick
Администратор
Репутация: +15/-1
Offline
Сообщений: 868
Re: Докачка файлов
«
Ответ #7 :
16 января 2007, 10:41:30 »
Цитата: Сергей от 16 января 2007, 10:26:08
Докачка с места разрыва подразумевает сохранение в кэше (кэширование) скачанных данных.
Когда я в Opera скачиваю какой-то файл я могу остановить загрузку, затем продолжить ее. Так же и в FF. Т.е. файлы загружаемые через "Сохранить" или "Сохранить как..." разумеется кэшируются браузером и при возобновлении закачки браузер посылает запрос с какого места следует продолжить загрузку.
Недокачанные файлы со страниц (картинки например) так же попадают в кэш браузера и в случае разрыва связи мы и видим "полкартинки". Пытаются ли браузеры докачивать такие файлы - не уверен, вроде бы нет.
Так а здесь и сейчас о каких файлах идет речь? Какие файлы предлагается пытаться докачивать (тип, размер), а какие нет?
Цитата: Rick от 16 января 2007, 10:17:10
Проблема как раз разрешится. Сейчас фрагменты лежат мертвым грузом. А тут они пойдут в дело. И будет их не много а по одному фрагменту на каждый файл.
Возможность работы многопоточной "качалки" через НС не учитывается?
Сообщить модератору
Записан
Сергей
Beta tester
Репутация: +9/-2
Offline
Сообщений: 621
Re: Докачка файлов
«
Ответ #8 :
16 января 2007, 10:59:05 »
Цитировать
при возобновлении закачки браузер посылает запрос с какого места следует продолжить загрузку.
Т.е имеем
Partial Content
клиент посылает запросы на скачку не всего файла а только фрагментов. Мы эти фрагменты корректно сохраним в кэше и склеим если нужно.
Цитировать
Пытаются ли браузеры докачивать такие файлы
Не пытаются. Качают заново. В таком случае, HC бы просто сразу отдал браузеру уже скачанное начало файла а серверу послал запрос на остаток. Браузер будет думать, что качает с начала.
Цитировать
Какие файлы предлагается пытаться докачивать
Файлы с известным размером.
Кстати, желательно еще сохранять в кэше размер файла лежащего на сервере.
Цитировать
Возможность работы многопоточной "качалки" через НС не учитывается?
Об этом и речь.
Сообщить модератору
Записан
mai62
Автор HC
Репутация: +226/-4
Offline
Сообщений: 6383
Re: Докачка файлов
«
Ответ #9 :
16 января 2007, 11:04:42 »
Несколько дней назад вспоминал эту тему, к тому подтолкнуло резкое ухудшение качества моего выхода в интернет, часто обрывается закачка файлов в несколько десятков килобайт. Хотелось автоматом начинать докачку сразу при обрыве, без участия пользователя. Пока не нашел с какой стороны подступисться (связь с сервером ведь уже потеряна, нужно возобновлять соединение, а поток, работающий с этим файлом, находится уже на стадии завершения своей работы).
Сделать докачку при обновлении вроде не сложно, единственное, что мешает - мусор в кэше.
Цитировать
А что сейчас происходит с недокачанными кусками .new ?
Тоже нерешенный вопрос. Сейчас они не удаляются но и не докачиваются потом.
Оставлять их не планировалось, уни должны и будут удаляться.
Цитировать
Так а здесь и сейчас о каких файлах идет речь? Какие файлы предлагается пытаться докачивать (тип, размер), а какие нет?
Думаю, обо всех недокачанных: картинках, html, скрипnах и т.д. Они, как ни печально, тоже не всегда загружаются полностью, не только многомегабайтные архивы.
Сообщить модератору
Записан
Сергей
Beta tester
Репутация: +9/-2
Offline
Сообщений: 621
Re: Докачка файлов
«
Ответ #10 :
16 января 2007, 11:13:00 »
Цитировать
Оставлять их не планировалось, уни должны и будут удаляться.
Почему сейчас не удаляются? Когда они должны удаляться по твоему?
Я за то, чтобы их оставлять, и удалять только по команде очистки кэша.
html данные можно докачивать только в том случае, если страница на сервере не изменилась. Т.е. сервер сообщает размер и дату. Размер не изменился а дата не новее файла в кэше.
Дату мы храним а атрибутах файла.
Где хранить размер?
«
Последнее редактирование: 16 января 2007, 11:25:11 от Сергей
»
Сообщить модератору
Записан
Rick
Администратор
Репутация: +15/-1
Offline
Сообщений: 868
Re: Докачка файлов
«
Ответ #11 :
16 января 2007, 11:37:57 »
Цитата: Сергей от 16 января 2007, 10:59:05
Т.е имеем
Partial Content
клиент посылает запросы на скачку не всего файла а только фрагментов. Мы эти фрагменты корректно сохраним в кэше и склеим если нужно.
Не нужно. Если браузер посылает запрос на фрагмент, то и склейку он выполнит сам. Если в ответ на запрошенный фрагмент отдать весь файл будет ошибка.
Цитировать
Не пытаются. Качают заново.
Верно. Браузер же "не знает", что файл недокачен - просто показывает то что есть в кэше. А по команде "Обновить" обновляет естественно целиком.
Цитировать
Файлы с известным размером.
Имхо это необходимое но недостаточное условие. Например, пытаться докачивать картинку в 1,5КБ нужно? Имхо нет - больше времени уйдет на выяснение возможности докачать, чем скачать с нуля.
Цитировать
Кстати, желательно еще сохранять в кэше размер файла лежащего на сервере.
Есть мысли в каком виде это делать?
Цитата: mai62 от 16 января 2007, 11:04:42
Хотелось автоматом начинать докачку сразу при обрыве, без участия пользователя. Пока не нашел с какой стороны подступисться (связь с сервером ведь уже потеряна, нужно возобновлять соединение, а поток, работающий с этим файлом, находится уже на стадии завершения своей работы).
А почему нельзя не отдавать файл запросившей прогамме (браузеру) удерживая соединение с ним открытым и ждать восстановления коннекта с инетом (ограничив время ожидания), после чего отправлять запрос на дозакачку?
Цитировать
Думаю, обо всех недокачанных: картинках, html, скрипnах и т.д. Они, как ни печально, тоже не всегда загружаются полностью, не только многомегабайтные архивы.
Думаю, не все докачки одинаково полезны.
Мелкие файлы имхо докачивать - только время терять. Вопрос в границе: что считать "мелкими". Может быть есть и другие критерии по которым файл не нужно пытаться докачивать.
Сообщить модератору
Записан
Сергей
Beta tester
Репутация: +9/-2
Offline
Сообщений: 621
Re: Докачка файлов
«
Ответ #12 :
16 января 2007, 11:55:17 »
Цитировать
Если браузер посылает запрос на фрагмент, то и склейку он выполнит сам.
Ты чего-то не понял, наверное. Браузер не трогает файлы в кэше HC. Откуда ему знать о нем?
И следовательно склеить не сможет.
Цитировать
Если в ответ на запрошенный фрагмент отдать весь файл будет ошибка.
А зачем отдавать весь файл при запросе фрагмента?
Что запросил браузер, то и должен получить.
Цитировать
Например, пытаться докачивать картинку в 1,5КБ нужно?
А часто обрывается закачка маленьких файлов? Вот большие картинки надо докачивать.
Можно задать в опциях порог, меньше которого не докачивать а тянуть заново.
Цитировать
Есть мысли в каком виде это делать?
file_name
#start.size
Сообщить модератору
Записан
Сергей
Beta tester
Репутация: +9/-2
Offline
Сообщений: 621
Re: Докачка файлов
«
Ответ #13 :
16 января 2007, 11:59:18 »
Squid точно кэширует фрагменты. Много раз такое замечал. Канал у нас в институте был слабый. Когда запускал многопоточную закачку в ReGet, то иногда начало файла скачивалось мгновенно. Видимо, кто-то начинал качать через IE и обрывал. Но информация сохранялась в кэше.
Сообщить модератору
Записан
Rick
Администратор
Репутация: +15/-1
Offline
Сообщений: 868
Re: Докачка файлов
«
Ответ #14 :
16 января 2007, 12:10:07 »
Цитата: Сергей от 16 января 2007, 11:55:17
Ты чего-то не понял, наверное. Браузер не трогает файлы в кэше HC. Откуда ему знать о нем?
И следовательно склеить не сможет.
Когда я читаю "
клиент посылает запросы на скачку не всего файла а только фрагментов
" я понимаю, что клиент - это браузер посылающий запрос НС, а "
Мы эти фрагменты корректно сохраним в кэше и склеим если нужно
" - здесь "мы" - это собственно НС. Если клиент, посылающий запрос на фрагмент и склевающий "мы" - это один и тот же НС - да, я действительно что-то понял неправильно.
Цитировать
А зачем отдавать весь файл при запросе фрагмента?
Что запросил браузер, то и должен получить.
Именно об этом я и говорил.
Сообщить модератору
Записан
Сергей
Beta tester
Репутация: +9/-2
Offline
Сообщений: 621
Re: Докачка файлов
«
Ответ #15 :
16 января 2007, 12:16:21 »
Мы эти фрагменты корректно сохраним в кэше и склеим если нужно
... и отдадим фрагменты попутно клиенту (браузеру, качалке), который склеит их у себя, разумеется.
Сообщить модератору
Записан
mai62
Автор HC
Репутация: +226/-4
Offline
Сообщений: 6383
Re: Докачка файлов
«
Ответ #16 :
16 января 2007, 13:07:52 »
Rick
Цитировать
А почему нельзя не отдавать файл запросившей прогамме (браузеру) удерживая соединение с ним открытым и ждать восстановления коннекта с инетом (ограничив время ожидания), после чего отправлять запрос на дозакачку?
Если соединение разорвалось, то можно уже не ждать, оно само не восстановится. И я не писал, что нельзя отправлять запрос на дозакачку. Я писал
Цитировать
Пока не нашел с какой стороны подступисться (связь с сервером ведь уже потеряна, нужно возобновлять соединение, а поток, работающий с этим файлом, находится уже на стадии завершения своей работы).
Сообщить модератору
Записан
Rick
Администратор
Репутация: +15/-1
Offline
Сообщений: 868
Re: Докачка файлов
«
Ответ #17 :
16 января 2007, 13:25:40 »
Цитата: mai62 от 16 января 2007, 13:07:52
Если соединение разорвалось, то можно уже не ждать, оно само не восстановится.
Давай разделим понятия соединения (НС-сервер, НС-браузер) и соединение с инетом ("коннект") - а то похоже путаемся. Или Я путаюсь.
Дык вот: при обрыве коннекта, соединение НС-сервер разумеется тоже разрывается. НС "машет ручкой" браузеру и соединение НС-браузер так же закрывается. Суть того, что я писал в посте выше: не закрывать соединение НС-браузер а ожидать восстановление коннекта (не до бесконечности конечно). Восстановится ли коннект ручной командой пользователя или автоматом ("перезвонить при обрыве") - не важно. При появлении коннекта установить новое соединение НС-сервер, запросить докачку файла и получив отдать его ожидающему браузеру.
Цитировать
И я не писал, что нельзя отправлять запрос на дозакачку. Я писал
Цитировать
Пока не нашел с какой стороны подступисться (связь с сервером ведь уже потеряна, нужно возобновлять соединение, а поток, работающий с этим файлом, находится уже на стадии завершения своей работы).
А почему/зачем "поток, работающий с этим файлом, находится уже на стадии завершения своей работы"?
Сообщить модератору
Записан
Кирилл
Beta tester
Репутация: +5/-1
Offline
Сообщений: 124
Re: Докачка файлов
«
Ответ #18 :
16 января 2007, 14:40:11 »
А может быть стоит вместо приделывания к HC собственного менеджера закачек, дать возможность для загрузки больших файлов использовать внешний? Дабы не пытаться забивать гвозди микроскопом.
Сообщить модератору
Записан
Rick
Администратор
Репутация: +15/-1
Offline
Сообщений: 868
Re: Докачка файлов
«
Ответ #19 :
16 января 2007, 14:53:41 »
Цитата: Кирилл от 16 января 2007, 14:40:11
дать возможность для загрузки больших файлов использовать внешний? Дабы не пытаться забивать гвозди микроскопом.
Ты не совсем верно понял проблему: в основном речь не о загрузке больших файлов, а обычных страниц и их элементов. Но будет работать и для больших файлов если кто-то будет их качать через HC (зачем?) - т.е механизм одинаковый.
Представь, что на странице тяжеловесные картинки - дисконнект - качай картинки с нуля. Речь идет о том, чтобы
до
качать их после восстановления связи.
Сообщить модератору
Записан
Страниц: [
1
]
2
3
...
7
Вверх
Отправить эту тему
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Главная категория
-----------------------------
=> Общие вопросы
=> Новые предложения
=> Дополнения, плагины
=> Сжатие трафика
=> English forum
=> Indonesian forum
-----------------------------
Гостевая
-----------------------------
=> Гостевая
-----------------------------
Дела домашние
-----------------------------
=> Сайт и форум HandyCache
=> Курилка
© 2006-2014 HandyCache Team. Все права защищены.
Загружается...