![]() |
|
Модераторы: Snowy, Poseidon, MetalFan |
![]()
|
|
| cardon |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 3.12.2010 Репутация: нет Всего: нет |
Добрый день пробую написать свой кешируюший прокси.
На данный момент выбрал компонент IndyHttpProxyServer.
Данный код срабатывает на событии OnHTTPDocument. Но есть несколько подозрений 1) Событие OnHTTPDocument срабатывает когда уже полностью загружен файл из интернета из-за чего смысла в загрузке данных в поток с диска в данном событии смысла нет. Так ли это? Если да то на каком событии пробовать записывать данные в поток с диска чтобы ускорить загрузку? 2) Так же есть подозрение что при сохранении через SaveToFile и загрузке через LoadToFile происходит замедление загрузки страницы т.д. обрабатывается все это не в потоке и ждет последующую загрузку/сохранения файла. Если так то как поправить? Есть идея что сохранять файлы надо каждый в отдельном потоке разбивая файл к примеру на 20 потоков и каждый поток читает к примеру по 50 байт и записывает в один файл. Тоже самое с чтением файла. 20 потоков считывает файл по 50 байт и записывают их в поток. Подскажите по этому поводу. |
|||
|
||||
| MetalFan |
|
|||
![]() Аццкий Сотона ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3815 Регистрация: 2.10.2006 Где: Moscow Репутация: 14 Всего: 128 |
а что мешает открыть исходники индей и/или под отладкой посмотреть, что там когда загружается? по п.2 - совершенно бесполезная оптимизация, имхо. уж прочитать/записать оптимальне, чем это делает ОС, врядли получится. А кеш "самых" популярных файлов можно вообще в памяти держать -------------------- There are always someone smarter than you... |
|||
|
||||
| cardon |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 3.12.2010 Репутация: нет Всего: нет |
Спасибо понял. По поводу пункта 2. А если вынести SaveToFile и LoadToFile в отдельные потоки то ускориться ли загрузка страницы? На сколько знаю браузер одновременно передает загрузку нескольких файлов. А в моем случае они получаеться будут стоять в очереди(так ли это?) и ждать когда получим последующий файл. По этому и хочеться ускорить.
Под отладкой мешает посмотреть знания ) По этому и прошу совета тут. Не могу понять где записывать данные в поток VStream. В OnHTTPDocument похоже это делать не рационально т.к. там уже готовый файл лежить в Vstream. Значит надо подменивать его до того как он там окажется. Так понимаю надо или создавать Handler и привязываеть его и в нем уже это все подменивать или же в событии OnBeforeHandler. И тем более как потом отдать это дело браузеру и отменить загрузку с сервера. Кто знает подскажите. Это сообщение отредактировал(а) cardon - 24.9.2012, 19:04 |
|||
|
||||
| MetalFan |
|
|||
![]() Аццкий Сотона ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3815 Регистрация: 2.10.2006 Где: Moscow Репутация: 14 Всего: 128 |
Судя по сорцам индей, что идут с DXE (10.5.7), отменить загрузку с сервера назначения запроса никак нельзя. Перед вызовом OnHTTPDocument сначала происходит чтение ответа на запрос с сервера назначения, а потом этот результат передается в OnHTTPDocument, где может быть модифицирован.
Единственный на мой взгляд вариант - переписать индей немного под свои нужды. Например: добавить событие ПЕРЕД чтением ответа от внешнего сервера и при необходимости не делать это чтение... Добавлено @ 21:46 Не надо ничего колхозить. на сколько я понимаю, каждый OnHTTPDocument выполняется в отдельном потоке. Это сообщение отредактировал(а) MetalFan - 24.9.2012, 21:50 -------------------- There are always someone smarter than you... |
|||
|
||||
![]()
|
| Правила форума "Delphi: Сети" | |
|
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делится вскрытыми компонентами
Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Snowy, Poseidon, MetalFan. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Сети | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |