Главная
Форум
Контакты
Купить
Поддержи проект
Поиск
Искать:
Расширенный поиск
[Закрыть]
Правила форума
Войти
Регистрация
Russian
English
HandyCache форум
Главная категория
»
Новые предложения
»
Докачка файлов и загрузка по частям
Имя пользователя:
1 час
1 день
1 неделя
1 месяц
Навсегда
Пароль:
Страниц:
1
...
3
4
[
5
]
6
7
Вниз
« предыдущая тема
следующая тема »
Отправить эту тему
Печать
Автор
Тема: Докачка файлов и загрузка по частям (Прочитано 152032 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Михаил
Gold beta tester
Репутация: +337/-14
Offline
Сообщений: 5513
Взятие из кэша при запросе с Range
«
Ответ #80 :
23 декабря 2007, 01:15:02 »
Если получен запрос с "Range: bytes=...", и файл отдается из кэша, то хорошо бы отдавать лишь нужный кусок с ответом 206. Сейчас отдается весь файл с ответом 200.
Добавлено: 23 Декабря 2007, 00:43:21
Вижу, что при запросе с Range IMS не вставляется. Почему? Получается, тянем из сети то, что можем выдать из кэша.
Сообщить модератору
Записан
mai62
Автор HC
Репутация: +226/-4
Offline
Сообщений: 6383
Re: Взятие из кэша при запросе с Range
«
Ответ #81 :
23 декабря 2007, 01:23:34 »
Согласен, надо как-нибудь добраться.
Сообщить модератору
Записан
Михаил
Gold beta tester
Репутация: +337/-14
Offline
Сообщений: 5513
Re: Взятие из кэша при запросе с Range
«
Ответ #82 :
23 декабря 2007, 01:36:03 »
Заметил один связанный с этим баг. У меня между НС и удаленным сервером стоит Proxomitron, разжимающий приходящие gzip-ответы. У соседа его нет. Кэш общий. Сосед когда-то закачал файл, и он лежит в кэше в gzip-виде. Запрашиваю этот файл я. Мой клиент тянет в два потока - шлет обычный запрос (назовем его первый), ответ на который в будущем оборвет посредине, и запрос с Range (второй) с прерванного места до конца. Ответ на первый запрос берется из кэша (т.к. сработал IMS), и клиенту отдается кусок gzip-файла. Ответ на второй запрос шлет сервер (т.к. IMS не вставлялся), исходя из размера несжатого файла. В итоге клиент, склеив два куска, получает абракадабру.
«
Последнее редактирование: 23 декабря 2007, 01:48:35 от Михаил
»
Сообщить модератору
Записан
DenZzz
Модератор
Репутация: +179/-11
Offline
Сообщений: 5589
Re: Взятие из кэша при запросе с Range
«
Ответ #83 :
23 декабря 2007, 13:02:56 »
Цитата: Михаил от 23 декабря 2007, 01:15:02
Если получен запрос с "Range: bytes=...", и файл отдается из кэша, то хорошо бы отдавать лишь нужный кусок с ответом 206. Сейчас отдается весь файл с ответом 200.
Чревато тем, что у клиента может оказаться часть совсем не того файла, что есть у нас в кэше, и склеив их, клиент получит все ту же абракадабру! Отдавая сейчас весь файл из кэша, HC это предотвращает!
Сейчас мы не храним ни ETag, ни истинный IMS файлов в кэше. Соответственно, сопоставить их с запросом клиента, мы не можем! Следовательно, никто не может гарантировать, что в кэше у нас лежит именно тот файл, часть которого запрашивает клиент!
Сравнивать IMS клиента с датой файла в кэше, конечно можно, но это крайне ненадежный способ идентификации неизменности файла, т.к. он зависит от точности системной даты и времени, от скорости канала и т.д. ...
Сообщить модератору
Записан
Михаил
Gold beta tester
Репутация: +337/-14
Offline
Сообщений: 5513
Re: Взятие из кэша при запросе с Range
«
Ответ #84 :
23 декабря 2007, 13:42:36 »
Цитата: DenZzz от 23 декабря 2007, 13:02:56
Чревато тем, что у клиента может оказаться часть совсем не того файла, что есть у нас в кэше, и склеив их, клиент получит все ту же абракадабру!
Тогда клиент запросит If-Range, If-Unmodified-Since или If-Match, чтоб убедиться в неизменности контента. Если таких заголовков нет (например, используем менеджер закачек), то можно смело отдавать из кэша только нужный кусок и ответ 206.
И IMS вставлять при этом тоже нужно.
Если же такие заголовки есть, то действительно, лучше отдать весь файл из кэша.
Когда же решимся организовать хранение метаданных? Слишком много вопросов в него упираются.
Сообщить модератору
Записан
DenZzz
Модератор
Репутация: +179/-11
Offline
Сообщений: 5589
Re: Взятие из кэша при запросе с Range
«
Ответ #85 :
23 декабря 2007, 15:51:28 »
Цитата: Михаил от 23 декабря 2007, 13:42:36
Тогда клиент запросит If-Range, If-Unmodified-Since или If-Match, чтоб убедиться в неизменности контента. Если таких заголовков нет (например, используем менеджер закачек), то можно смело отдавать из кэша только нужный кусок и ответ 206.
Я не раз наблюдал в ReGet-е в процессе докачки на медленном канале сообщение типа: "Размер файла на сервере изменился! Удалить временный файл и начать закачку с начала?"
Причем, если жмешь "Нет", то он просто останавливает докачку!
А когда конечный размер файла неизвестен или не совпадает, то ReGet сразу трубит, что докачка невозможна и качает в 1 поток, а случае разрыва соединения предлагает начать все с начала! И это правильно!
Поэтому твой пример с багом выше вызывает у меня недоумения! Первая часть из кэша пришла с одним размером, вторая часть с сервера - с другим (без GZIP разница в разы, трудно не заметить)!
Какой менеджер закачек у тебя позволяет себе склеивать такой битый файл? ИМХО, это баг менеджера закачек!
P.S. Вообще-то, этой теме самое место в разделе "Новые предложения"! Вопрос о кэшировании/отдаче из кэша "206" уже много обсуждался в теме "
Докачка файлов
", куда и будут присоединены эти посты...
«
Последнее редактирование: 23 декабря 2007, 17:39:37 от DenZzz
»
Сообщить модератору
Записан
Михаил
Gold beta tester
Репутация: +337/-14
Offline
Сообщений: 5513
Re: Докачка файлов
«
Ответ #86 :
23 декабря 2007, 20:58:38 »
Цитата: DenZzz от 23 декабря 2007, 15:51:28
Какой менеджер закачек у тебя позволяет себе склеивать такой битый файл? ИМХО, это баг менеджера закачек!
Он не позволяет себе склеивать. Он перезапрашивает кусок еще и еще и получает ту же несовместимую картину. Это FlashGet. Не знаю, отключается ли у него такая настойчивость. Даже желания нет это изучать. Сейчас проще пустить его в обход НС.
А вот как берется повторно из кэша. Клиент запросил первый раз. НС начал выдавать файл.
Цитировать
GET
http://fatal.ru/404.html
HTTP/1.1
Host: fatal.ru
Accept: */*
Referer:
http://fatal.ru
User-Agent: Mozilla/4.0 (compatible; MSIE 5.00; Windows 98)
Connection: close
HTTP/1.1 200 OK
Server: HandyCache
Content-Length: 3736
Last-Modified: Tue, 18 Jul 2006 18:44:54 GMT
Content-Type: text/html; charset=windows-1251
Connection: Keep-Alive
Посреди закачки клиент шлет запрос куска от 1688 байта до конца файла. Первую при этом оборвет на 1687 байте. А НС отдает не запрашиваемый кусок, а весь файл.
Цитировать
GET
http://fatal.ru/404.html
HTTP/1.1
Host: fatal.ru
Accept: */*
Referer:
http://fatal.ru
User-Agent: Mozilla/4.0 (compatible; MSIE 5.00; Windows 98)
Range: bytes=1688-
Connection: close
HTTP/1.1 200 OK
Server: HandyCache
Content-Length: 3736
Last-Modified: Tue, 18 Jul 2006 18:44:54 GMT
Content-Type: text/html; charset=windows-1251
Connection: Keep-Alive
А можно было б отдать лишь нужную часть. При этом по совпадающему общему размеру и полю LM клиент понял бы, что это подходящая часть.
«
Последнее редактирование: 23 декабря 2007, 21:04:22 от Михаил
»
Сообщить модератору
Записан
Сергей
Beta tester
Репутация: +9/-2
Offline
Сообщений: 621
Re: Докачка файлов
«
Ответ #87 :
24 декабря 2007, 14:57:46 »
Цитировать
Если получен запрос с "Range: bytes=...", и файл отдается из кэша, то хорошо бы отдавать лишь нужный кусок с ответом 206. Сейчас отдается весь файл с ответом 200.
А на каком основании вообще берется файл из кэша? Мы ведь не сохраняем в кэше Partial Content? Значит и читать не имеем права. Пусть так же тянется из инета и в кэш не лезет.
Сообщить модератору
Записан
Михаил
Gold beta tester
Репутация: +337/-14
Offline
Сообщений: 5513
Re: Докачка файлов
«
Ответ #88 :
24 декабря 2007, 17:58:52 »
Цитата: Сергей от 24 декабря 2007, 14:57:46
А на каком основании вообще берется файл из кэша?
Сработал, например, список Н.
Цитировать
Мы ведь не сохраняем в кэше Partial Content? Значит и читать не имеем права.
Мы сохраняем в кэше целый файл. Что нам мешает на соответствующий запрос отдать его часть?
Цитировать
Пусть так же тянется из инета и в кэш не лезет.
Из инета ничего не тянется. Посмотри приведенный пример. Там все из кэша.
Сообщить модератору
Записан
Михаил
Gold beta tester
Репутация: +337/-14
Offline
Сообщений: 5513
Re: Докачка файлов
«
Ответ #89 :
24 декабря 2007, 22:09:06 »
Не работает закачка в два потока не изменившихся html-файлов. Клиент запрашивает файл, сервер отвечает 304, и НС отдает файл из кэша. Клиент снова запрашивает, но уже кусок этого же файла - IMS не вставляется, и сервер отдает нужный кусок. Файл вроде один и тот же, но НС при записи в кэш добавлял в HTML свои тэги, и файл от НС уже не стыкуется с тем куском, который передает сервер. В итоге баг.
Если б НС вставлял IMS в запрос с Range, получил бы и второй раз ответ 304, и мог выдать нужный кусок из кэша без конфликта.
«
Последнее редактирование: 24 декабря 2007, 22:13:07 от Михаил
»
Сообщить модератору
Записан
Сергей
Beta tester
Репутация: +9/-2
Offline
Сообщений: 621
Re: Докачка файлов
«
Ответ #90 :
25 декабря 2007, 10:53:52 »
Цитата: Михаил от 24 декабря 2007, 17:58:52
Сработал, например, список Н.
Почему тогда не срабатывает список З? URL же удовлетворяет списку?
Цитировать
Мы сохраняем в кэше целый файл. Что нам мешает на соответствующий запрос отдать его часть?
Точно так же - ничто не мешает записывать в кэш запрошенное продолжение недокачанного файла
Цитировать
Из инета ничего не тянется. Посмотри приведенный пример. Там все из кэша.
Так не должно было браться из кэша. Отсюда и твой глюк.
Сообщить модератору
Записан
Михаил
Gold beta tester
Репутация: +337/-14
Offline
Сообщений: 5513
Re: Докачка файлов
«
Ответ #91 :
25 декабря 2007, 14:17:15 »
Цитата: Сергей от 25 декабря 2007, 10:53:52
Почему тогда не срабатывает список З? URL же удовлетворяет списку?
При срабатывании Н и наличии файла в кэше он не просматривается.
Цитировать
ничто не мешает записывать в кэш запрошенное продолжение недокачанного файла
Мешает невозможность хранения метаинформации. Но мы рассматриваем пример, когда файл уже весь есть в кэше.
Цитировать
Так не должно было браться из кэша.
Наоборот, должно было. Только не весь файл, а запрошенная часть.
Сообщить модератору
Записан
Сергей
Beta tester
Репутация: +9/-2
Offline
Сообщений: 621
Re: Докачка файлов
«
Ответ #92 :
27 декабря 2007, 14:48:12 »
Цитировать
При срабатывании Н и наличии файла в кэше он не просматривается.
Ты не понял. Я о том что PartialContent отключает запись в кэш но не влияет на чтение.
Это нелогично. Игнорировать так игнорировать.
Сообщить модератору
Записан
MRV_Pahan
Новичок
Репутация: +0/-0
Offline
Сообщений: 9
Re: Докачка файлов
«
Ответ #93 :
15 декабря 2009, 12:35:32 »
А по какой причине заглохла эта ветка?
Ведь докачки как не было так и нет.
Хуже того, в связке Опера - Хэндикэш - Глобакс файлы принимаются с ошибками.
Т.е. качаем даже небольшой файл (порядка 1-2 метра) и при нестабильном соединении Хэндикэш начинает закачку заново, но опера об этом почему-то не "узнает" и продолжает закачку как будто закачка продолжилась.
В результате файл испорчен.
В цепочке Опера - Глобакс все корректно докачивается.
Сообщить модератору
Записан
DenZzz
Модератор
Репутация: +179/-11
Offline
Сообщений: 5589
Re: Докачка файлов
«
Ответ #94 :
15 декабря 2009, 13:04:50 »
Цитата: MRV_Pahan от 15 декабря 2009, 12:35:32
Т.е. качаем даже небольшой файл (порядка 1-2 метра) и при нестабильном соединении Хэндикэш начинает закачку заново, но опера об этом почему-то не "узнает" и продолжает закачку как будто закачка продолжилась.
Не верю! HC так просто не умеет делать! Закачкой рулит браузер, HC только исполняет его запросы и по своей воле ничего заново закачивать не может. Приложи отладочный лог такого случая, посмотрим, что на самом деле у тебя происходит...
Сообщить модератору
Записан
divinets
Пользователь
Репутация: +1/-0
Offline
Сообщений: 59
Re: Докачка файлов
«
Ответ #95 :
14 марта 2010, 17:35:14 »
Предлагаю научить HC возвращать Partial Content не только из интернета, но и из кэша.
Пример: есть большой файл в кэше и медленный клиент который не успевает за свою сессию скачать этот файл. В результате даже при возможности его качалки продолжить с места разъединения, HC отказывает ему и разрешает качать только весь файл целиком, т.е. с начала.
Есть возможность исправить в будущих версиях?
Сообщить модератору
Записан
rosman
Новичок
Репутация: +0/-0
Offline
Сообщений: 1
Re: Докачка файлов
«
Ответ #96 :
13 мая 2010, 12:00:09 »
Докачка когда-нибудь появится или нет? Очень нужная идея, но почему-то так и не реализованная
Сообщить модератору
Записан
Parcher
Постоялец
Репутация: +1/-0
Offline
Сообщений: 136
Re: Докачка файлов
«
Ответ #97 :
05 сентября 2010, 20:14:18 »
Извините меня, если данный вопрос уже где-то обсуждался. Но наряду с докачкой, планируется ли сделать многопотоковую закачку файлов? К примеру можно было сделать работу многопотоковой закачки файлов по правилам (качать в несколько поток файлы с расширением... и размером больше.... исключения....)
Сообщить модератору
Записан
DIGGER
Старожил
Репутация: +14/-3
Offline
Сообщений: 312
Re: Докачка файлов
«
Ответ #98 :
06 сентября 2010, 14:51:15 »
Parcher
, такого реализовать не возможно в принципе!
Многопоточность реализуема на стороне браузера, и только.
(Не с проста ж есть всякие менеджеры закачек)
Сообщить модератору
Записан
Parcher
Постоялец
Репутация: +1/-0
Offline
Сообщений: 136
Re: Докачка файлов
«
Ответ #99 :
06 сентября 2010, 15:36:03 »
А если запрос отправлять в менеджер закачки? К примеру в ReGet. Или это гемор?
Сообщить модератору
Записан
Страниц:
1
...
3
4
[
5
]
6
7
Вверх
Отправить эту тему
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Главная категория
-----------------------------
=> Общие вопросы
=> Новые предложения
=> Дополнения, плагины
=> Сжатие трафика
=> English forum
=> Indonesian forum
-----------------------------
Гостевая
-----------------------------
=> Гостевая
-----------------------------
Дела домашние
-----------------------------
=> Сайт и форум HandyCache
=> Курилка
© 2006-2014 HandyCache Team. Все права защищены.
Загружается...