Название: Придерживать параллельные закачки Отправлено: Qua от 22 января 2007, 15:07:46 Часто сталкиваюсь с такой проблемой. Она меня очччень раздррражает >:(
Заключается в том, что если браузер или прога, работающие через HandyCache запрашивает одно и то же несколько раз, то HandyCache усердно начинает качать такие страницы, изображения и т.д. снова и снова. Почему бы не проверять адрес URL хотя бы. Недопустимо закачивать один и тот же URL параллельно в пяти потоках!!! >:( Где экономия? ??? Название: Re: Как не допустить дублирования загрузки файлов в кеш? Отправлено: Сергей от 22 января 2007, 16:12:07 Браузер не может запрашивать одно и то же параллельно. Скорее всего, он качает разные страницы, которые имеют одинаковый URL. Я встречал такое.
Вот пример http://www.skylink.ru/info/tarifs.aspx?p=1&id=1&r=77 Там есть ссылки на группы тарифов. Каждая ссылка открывает один и тот-же URL. А вот в ситуации, когда несколько клиентов одновременно начинают качать одно и то-же, надо бы качать один раз. Эта тема уже поднималась на Руборде. Название: Re: Как не допустить дублирования загрузки файлов в кеш? Отправлено: Дем от 22 января 2007, 18:11:28 Цитировать А вот в ситуации, когда несколько клиентов одновременно начинают качать одно и то-же, надо бы качать один раз. Эта тема уже поднималась на Руборде. Многооконный браузер (а сейчас все такие) - он и есть "несколько клиентов"Название: Re: Как не допустить дублирования загрузки файлов в кеш? Отправлено: DenZzz от 22 января 2007, 20:22:18 Qua
Подтверждаю, если с одного сайта открыть несколько окон IE (или вкладок в Макстоне), то одна и та же новая картинка будет параллельно качаться в несколько потоков (это видно в Мониторе HC). Аналогичная картина, если в сети сразу несколько пользователей одновременно ходят по одним и тем же сайтам! Таким образом, если картинка на 500 кб и открывается 10 окон, то получим 4.5 Мб лишнего трафика! Поэтому придерживать дублирующие активные закачки одного и того же файла не помешало бы... В ToDo (http://handycache.ru/component/option,com_smf/Itemid,10/topic,20.0/) это уже внесено, как: "Реализовать опцию "Придерживать параллельные закачки"... Название: Re: Как не допустить дублирования загрузки файлов в кеш? Отправлено: Сергей от 23 января 2007, 08:45:21 Это еще один гвоздь в гроб IE ;)
А почему придерживать? Клиент не должен ждать пока другой докачает. Название: Re: Как не допустить дублирования загрузки файлов в кеш? Отправлено: Oneri от 23 января 2007, 09:25:28 Суть наверно в том чтобы при появлении нового URL программа проверяла не качается ли он уже если да то отдавать первый кусок файла из кеша а оставшийся поток отдавать от сервера. но думаю этот вариант сложно реализуем т.к. возникают проблемы с синхронизацией потоков.
Второй вариант: при появлении выше показанной ситуации отдаем файл из кеша и по таймеру (ну нарпример раз в секунду проверяем новые (поступившие) байты и отдаем их клиенту и так до окончания загрузки файла, т.е. в данном случае весь файл берется из кеша. Вариант с придержкой закачки тоже реален т.к. при плохом канале новый экземпляр файла никак не закачается быстрее того что уже качается :) так что для конечного пользователя все равно будет ускорение ПОЛНОЙ загрузки файла (да да порно будет появлятся сразу а не постепенно :) ) Тут не учтены трудности при многопоточной закачки, но думаю для качалки перезапросить файл труда не составит Название: Re: Как не допустить дублирования загрузки файлов в кеш? Отправлено: Сергей от 23 января 2007, 09:58:48 Oneri
Цитировать проверяла не качается ли он уже еще надо проверять ситуации, когда по одному URL качаются разные данные.Цитировать отдавать первый кусок файла из кеша не из кэща а из некоторого буфера. Т.к. в кэш может и не сохраняться.Название: Re: Как не допустить дублирования загрузки файлов в кеш? Отправлено: Oneri от 23 января 2007, 11:14:49 еще надо проверять ситуации, когда по одному URL качаются разные данные. Тогда как минимум надо обрабатывать заголовки :( Как решение данной проблемы мне кажется надо добавить в белый список новую колонку с исключением опции оптимизации одновременной закачки Цитировать отдавать первый кусок файла из кеша не из кэща а из некоторого буфера. Т.к. в кэш может и не сохраняться. В данном случае буфер не имеет смысла: 1. Перерасход памяти (а если качается большой файл) как пример файл качается из браузера и качалки через НС 2. Насколько я понимаю что в данном случае пользователя интересует получение актуальных данных и смысла в буфере здесь нет. Название: Re: Как не допустить дублирования загрузки файлов в кеш? Отправлено: Сергей от 23 января 2007, 12:29:43 Буфер на диске, разумеется.
Название: Re: Как не допустить дублирования загрузки файлов в кеш? Отправлено: DenZzz от 23 января 2007, 16:14:22 еще надо проверять ситуации, когда по одному URL качаются разные данные. Тогда как минимум надо обрабатывать заголовки :( Как решение данной проблемы мне кажется надо добавить в белый список новую колонку с исключением опции оптимизации одновременной закачки Еще один вариант - не качать параллельно только те URL, на которые может сработать список "Не обновлять". Логика проста: если бы закачки были не параллельные, а последовательные одна за другой, то второй, третий и т.д. раз файл взялся бы из кэша! Тогда зачем его качать параллельно! Если же мы знаем, что по одному URL могут быть разные данные (динамический контент), то ему не место в списке "Не обновлять" - просто исключаем его из списка (или в "Белом списке" пишем соответствующее правило). Название: Re: Как не допустить дублирования загрузки файлов в кеш? Отправлено: Сергей от 23 января 2007, 16:32:38 Цитировать Если же мы знаем, что по одному URL могут быть разные данные (динамический контент) Проблема в том, что контент статический.Название: Re: Как не допустить дублирования загрузки файлов в кеш? Отправлено: DenZzz от 23 января 2007, 16:39:26 Сергей
Цитировать Это еще один гвоздь в гроб IE Это проблема касается не только IE ! Представь в локальной сети 10 пользователей в Опере ходят через HC одновременно по одному фотоальбому в Инете! Вероятность, что все 10 одновременно наткнуться на одну и туже 3х-мегабайтную фотку велика! И Опера им ничем не поможет - все десять пользователей начнут параллельно качать эту фотку, забив под завязку и без того медленный канал на длительное время! ;) Цитировать Проблема в том, что контент статический. Контент статический, а данные каждый раз разные? Так бывает? Название: Re: Как не допустить дублирования загрузки файлов в кеш? Отправлено: Rick от 23 января 2007, 17:39:07 Это проблема касается не только IE ! В локальной сети кроме общего кэша никто не поможет :)Представь в локальной сети 10 пользователей... А вот как говорил Дем: Многооконный браузер (а сейчас все такие) - он и есть "несколько клиентов" У Оперы в этом случае все в порядке: один файл, запрошенный из нескольких окон, качается единожды - для всех "клиентов".Название: Re: Как не допустить дублирования загрузки файлов в кеш? Отправлено: Сергей от 23 января 2007, 17:51:34 DenZzz
Цитировать Контент статический, а данные каждый раз разные? Так бывает? Да. Я привел пример выше. Цитировать Представь в локальной сети 10 пользователей в Опере ходят через HC одновременно по одному фотоальбому в Инете! Я в курсе. Тут виноват будет HC. Просто не ожидал такого странного поведения от IE. Проблема есть. Хотелось бы ее решить. Название: Re: Как не допустить дублирования загрузки файлов в кеш? Отправлено: Сергей от 23 января 2007, 17:55:46 Цитировать У Оперы в этом случае все в порядке: один файл, запрошенный из нескольких окон, качается единожды - для всех "клиентов". Почему бы в HC не реализовать подобное? Понимаю что сложно. Но ведь сделали норвежцы? Чем мы хуже? Название: Re: Как не допустить дублирования загрузки файлов в кеш? Отправлено: Oneri от 23 января 2007, 18:07:47 Цитировать У Оперы в этом случае все в порядке: один файл, запрошенный из нескольких окон, качается единожды - для всех "клиентов". Почему бы в HC не реализовать подобное? Понимаю что сложно. Но ведь сделали норвежцы? Чем мы хуже? В опере данную фичу реализовать достаточно легко т.к. сам браузер полностью контролирует поцесс загрузки используя очередь, а НС не знает что у него запросят дальше и в какое время. Название: Re: Как не допустить дублирования загрузки файлов в кеш? Отправлено: DenZzz от 23 января 2007, 20:29:58 В опере данную фичу реализовать достаточно легко т.к. сам браузер полностью контролирует поцесс загрузки используя очередь, а НС не знает что у него запросят дальше и в какое время. Не вижу принципиальной разницы! Как будто Опера сама знает, по какой ссылке дальше кликнет пользователь или какую закладку откроет! ;) У HC тоже есть очередь активных закачек, которой он может управлять по своему усмотрению! Название: Re: Как не допустить дублирования загрузки файлов в кеш? Отправлено: Qua от 24 января 2007, 01:23:43 Тот мой пост, что вы видите самым первым - просто наболело, далее трезво. ;)
Объясню шире - может прояснит чего... Преамбула: Я часто пользуюсь различными картографическими сервисами NASA, MS Local.Live, GoogleMaps, поделками вроде Яndex.Карты и другими. Причем, к одному и тому же сервису обращаюсь разными прогами (мне действительно так удобнее - разные по возможностям компы, да и цели). Пользуюсь всем этим непременно в связке с Ханжой Кешкой (HandyCache служит чем-то вроде универсального и понятно устроенного единого кеша), с которым худо-бедно наплевать на несовместимость всех этих софтин. ;D Проблема: Единственное что меня сильно огорчает (см. выше) при работе HC - многочисленные повторения закачки одних и тех же ресурсов. Это хорошо видно в нижней части "Монитора" - одновременно в несколько потоков качается один и тот же URL. Хроническая "болезнь" практически всех картографических прог. Собственно, на одном компе (домашнем) эта проблема не очень-то заметна, на других (привет из прошлого) - дюже достаёт. Паразитный трафик! В такой нужный момент, на таком хилом канале. Просьба: Я понимаю, что виноват не столько HC, сколько проги - запрашивают один и тот же ресурс по нескольку раз... Но, ведь можно наверное реализовать проверку - загружается ли запрашиваемая страница в данный момент (если URL закачивается, то не повторять загрузки, а игнорировать запрос или взять из кэша). То, что подчеркнуто и есть новое предложение. Вопрос со статическим контентом и разными данными принципиально не настраиваемый? P.S. Трезво тоже не то, надеюсь основную мысль донёс. А, в целом, Кешка - мой лучший друг для связи с миром! :D Название: Re: Как не допустить дублирования загрузки файлов в кеш? Отправлено: NothingAnother от 24 января 2007, 07:50:06 Вопрос со статическим контентом и разными данными принципиально не настраиваемый? Прежде всего надо определиться с терминами. Если контент (иначе - содержимое) статичен, то о каких различных данных можно говорить?! Это просто два различных представления (человеческое и машинное) одного и того же понятия. Уточни свой вопрос так, чтобы это можно было понять не на уровне "наверное, он имел в виду..."Название: Re: Как не допустить дублирования загрузки файлов в кеш? Отправлено: DenZzz от 24 января 2007, 08:10:46 Qua
Цитировать Вопрос со статическим контентом и разными данными принципиально не настраиваемый? Собственно, выше уже предложили, как можно вручную исключить динамический контент из сферы действия предлагаемой опции, - через список "Не обновлять" или "Белый список". Название: Re: Как не допустить дублирования загрузки файлов в кеш? Отправлено: Дем от 24 января 2007, 10:10:09 А может проще подойти - если файл сохраняется в кеш - выдать клиенту сохранённый кусок и потом передовать из одного входящего в два исходящих.
А если в кеше нету - значит нету. Название: Re: Как не допустить дублирования загрузки файлов в кеш? Отправлено: Сергей от 24 января 2007, 10:56:41 Я это предлагал. Автор сказал, что это сложная задача. Не все так просто там.
Название: Re: Как не допустить дублирования загрузки файлов в кеш? Отправлено: Qua от 24 января 2007, 11:51:50 Вопрос со статическим контентом и разными данными принципиально не настраиваемый? Прежде всего надо определиться с терминами. Если контент (иначе - содержимое) статичен, то о каких различных данных можно говорить?! Это просто два различных представления (человеческое и машинное) одного и того же понятия. Уточни свой вопрос так, чтобы это можно было понять не на уровне "наверное, он имел в виду..."Цитата Цитировать Контент статический, а данные каждый раз разные? Так бывает? и ответ DenZzzЦитировать Да. Я привел пример выше. Название: Re: Как не допустить дублирования загрузки ф& Отправлено: Rick от 24 января 2007, 13:53:44 Я все-таки не пойму как возможен "статический контент с разными данными"? Одно исключает другое.
Вот пример URL'ы там разные:http://www.skylink.ru/info/tarifs.aspx?p=1&id=1&r=77 Там есть ссылки на группы тарифов. Каждая ссылка открывает один и тот-же URL. ctl00$CpMCol$DataGrid1$ctl02$ctl00 - Индивидуальные ctl00$CpMCol$DataGrid1$ctl03$ctl00 - Корпоративные ctl00$CpMCol$DataGrid1$ctl04$ctl00 - Тарифы на роуминг Точнее, это не сами URL - это аргументы для функции JavaScript формирующей URL. Название: Re: Как не допустить дублирования загрузки файлов в кеш? Отправлено: Сергей от 24 января 2007, 14:00:58 Там вместо ссылок запускаются java скрипты. В итоге загружается страница имеющая такой же URL. И в кэш записывается поверх старой страницы.
Попробуй полистать тарифы в автономном режиме. Ничего не выйдет. Название: Re: Как не допустить дублирования загрузки файлов в кеш? Отправлено: Сергей от 24 января 2007, 14:29:40 Там вообще веб-форма. И параметры через post передаются. Гиблое дело.
Название: Re: Как не допустить дублирования загрузки файлов в кеш? Отправлено: Михаил от 26 января 2007, 00:47:43 Хоть и оффтоп, но раз затронут случай, может, подумаем, как расправляться с Post-ом?
Например, встретив Post-запрос, так же как и для GET-запроса с параметрами создаем папку с названием, взятым из URL в его заголовке. Затем возникает проблема установления взаимно однозначного соответствия тела Post-запроса с наименованием файла в кэше, куда мы хотим его записать. Как упрощенный вариант можно предложить в качестве имени брать все тело Post-запроса (естественно, преобразованное через процедуру замены спецсимволов), обрезанное (при необходимости) до количества символов, равного ограничению на длину имени файла в операционной системе, либо равного значению, задаваемому нами самими. Таким образом, на части таких запросов достигнем счастья (не анализировал, но может, эта часть и не такая уж маленькая). Название: Re: Как не допустить дублирования загрузки файлов в кеш? Отправлено: Сергей от 26 января 2007, 10:31:04 Какая замена спецсимволов? Там вообще двоичные данные передаваться могут.
Можно посчитать контрольную сумму передаваемого к серверу блока данных и на его основе создать уникальное имя файла. Хотя, может я и заблуждаюсь. Название: Re: Как не допустить дублирования загрузки файлов в кеш? Отправлено: Михаил от 26 января 2007, 12:29:00 Сергей
Хорошая идея насчет контрольной суммы. Может, как автор идеи создашь тему для обсуждения, чтоб мы тут не оффтопили? Название: Re: Придерживать параллельные закачки Отправлено: Михаил от 11 мая 2008, 13:45:52 mai62
По какому принципу сейчас пишет в кэш НС, когда качаются параллельно несколько ответов, отображаемых на один файл кэша? Название: Re: Придерживать параллельные закачки Отправлено: DenZzz от 11 мая 2008, 14:33:19 По какому принципу сейчас пишет в кэш НС, когда качаются параллельно несколько ответов, отображаемых на один файл кэша? Кто первый начал, тот и пишет. Название: Re: Придерживать параллельные закачки Отправлено: Сергей от 12 мая 2008, 23:48:42 Может как нить визуализировать такие коллизии? Когда запись невозможна.
Чтоб было видно что запись в кэш не удалась. Заодно вовремя заметить ситуации когда кэш переполнен. А то сейчас выдает ошибку только когда папка недоступна. Пусть, например, значок будет мигать.
Powered by SMF 1.1.3 SMF © 2006, Simple Machines LLC
Joomla Bridge by JoomlaHacks.com |