Модераторы: Akina
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Повышение производительности программы, с компонентом WebBrowser 
V
    Опции темы
ProgramerForever
Дата 3.7.2009, 21:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 554
Регистрация: 15.11.2006
Где: Новосибирск

Репутация: 2
Всего: 5



Доброго времени суток, уважаемые форумчане.
Я написал приложение для просмотра Web страничек. Каждый экземпляр приложения содержит WebBrowser и немного другой "обвязки". Мне надо одновременно запускать их 50-100 штук. Уже при 40 комп виснет (хотя комп у меня не хилый).
Не подскажите пути уменьшения нагрузки на комп.
Вот что придумал я:
1.) Отключение графики в IE
(уже сделал, немного помогло)
2.) Сделать компонент WebBrowser (или всю форму) невидимым, чтобы не происходила отрисовка
(не пробовал, но, насколько я помню, возникают проблемы с загрузкой)
3.) Убить фреймы в страничках (99% страничек состоят из 2х фреймов. Первый из них важен и содержит мало кода и картинок. Второй же наоборот- не важен, но несёт основную нагрузку.)
Нужно занулить ("about:blank") или совсем убрать второй фрейм ( frames(1) )
(не знаю, как сделать)


Это сообщение отредактировал(а) ProgramerForever - 3.7.2009, 21:56
PM MAIL WWW ICQ   Вверх
neic
Дата 4.7.2009, 00:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 839
Регистрация: 28.1.2007

Репутация: нет
Всего: 7



Цитата(ProgramerForever @  3.7.2009,  21:55 Найти цитируемый пост)
Я написал приложение для просмотра Web страничек. 

Клон других браузеров? О_О Куда столько?

Цитата(ProgramerForever @  3.7.2009,  21:55 Найти цитируемый пост)
Уже при 40 комп виснет (хотя комп у меня не хилый).

Это учесть всех браузеров =)

Цитата(ProgramerForever @  3.7.2009,  21:55 Найти цитируемый пост)
Второй же наоборот- не важен, но несёт основную нагрузку.)

Раз несёт основную нагрузку значит он важен.

Из вариантов могу предложить тебе всё же сделать массив объектов веб-бразуера и просто пихать в файлы каждую влкдаку (исходный код страницы), а при нажатии на ту или иную вкладку считывать с файла.

Наверное должно помочь, хотя нужно посмотреть.

Добавлено через 1 минуту и 35 секунд
А вообще лучше сделать свой обработчик исходного кода.

Ответ от Akkin'ы будет наверно в понедельник, ибо выходные у него!
PM MAIL WWW ICQ Skype   Вверх
ProgramerForever
Дата 4.7.2009, 14:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 554
Регистрация: 15.11.2006
Где: Новосибирск

Репутация: 2
Всего: 5



Цитата

Из вариантов могу предложить тебе всё же сделать массив объектов веб-бразуера

А какая разница, где грузить компонент: в отдельном окне, или в одном-единственном (мне вариант с 50 приложениями более предпочтителен, т.к. эта программа простматривает огромное количество сайтов, и порой, благодаря эксплойтам, подвисает. Так пусть она одна зависнет, я её отключил, и забыл.)

PM MAIL WWW ICQ   Вверх
neic
Дата 5.7.2009, 01:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 839
Регистрация: 28.1.2007

Репутация: нет
Всего: 7



Цитата(ProgramerForever @  4.7.2009,  14:06 Найти цитируемый пост)
мне вариант с 50 приложениями более предпочтителен

Т.е. ты хочешь запускать 50 отдельных программ О_О?

Цитата(ProgramerForever @  4.7.2009,  14:06 Найти цитируемый пост)
т.к. эта программа простматривает огромное количество сайтов

Больно на DDOS атаку похоже smile 

А теперь:
Цитата(ProgramerForever @  4.7.2009,  14:06 Найти цитируемый пост)
А какая разница, где грузить компонент: в отдельном окне, или в одном-единственном

В том, что для каждой вкладки ты сможешь смотреть на какой комопнент идёт и отображать его в том случае если он открыт.

Цитата(ProgramerForever @  3.7.2009,  21:55 Найти цитируемый пост)
Нужно занулить ("about:blank")


Например:
Код

Private Web_GetData(Index as Integer)
' загружаем данные
' сморим открыт ли вкладка этого объекта
' если нет, то сохраняем исходный текст в текстовый (или куда там) файл и [U]обнуляем[/U] страницу
' если да, то отображаем
End Sub

А при нажатии, смотрим, если файл есть, то открываем его, после отображения удаляем.

Но я говорю, это нужно проверить ещё.
PM MAIL WWW ICQ Skype   Вверх
ProgramerForever
  Дата 5.7.2009, 03:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 554
Регистрация: 15.11.2006
Где: Новосибирск

Репутация: 2
Всего: 5



Цитата

Цитата(ProgramerForever @  4.7.2009,  14:06 )
мне вариант с 50 приложениями более предпочтителен


Т.е. ты хочешь запускать 50 отдельных программ О_О?

Да, нужно запускать 50 отдельных программ.
Цитата

Больно на DDOS атаку похоже  

Нет, это не DDoS, это программа для набора кредитов в т.н. автосёрфингах. При просмотре таких сайтов в обычных браузерах нижний фрейм (рекламируемый сайт) нередко разрушает верхний, что приводит к остановке автосёрфинга. А эта программа периодически обновляет страничку, дабы избежать таких ситуаций.
Кстати, занулить второй фрейм мне удалось. Так:
Код

Private Sub WB_DocumentComplete(ByVal pDisp As Object, URL As Variant)
On Error Resume Next
    Dim strJava As String
    WB.Document.Body.onbeforeunload = Null
    strJava = "frames[1].location.href = " + Chr(34) + "about:blank" + Chr(34) + ";"
    If WB.Document.Frames(1).Location.href <> "about:blank" Then Call WB.Document.parentwindow.execscript(strJava, "JavaScript")
End Sub


Это сообщение отредактировал(а) ProgramerForever - 5.7.2009, 17:06
PM MAIL WWW ICQ   Вверх
neic
Дата 5.7.2009, 10:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 839
Регистрация: 28.1.2007

Репутация: нет
Всего: 7



Понятно.
PM MAIL WWW ICQ Skype   Вверх
SOLAMON
Дата 21.7.2009, 17:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 21.7.2009
Где: Санкт-Петербург

Репутация: нет
Всего: нет



Есть конечно геморойный фариант в наглую через SOCKET (компонент MSWINSCK.OCX) . 

Открываем сокет, делаем GET
Затем что нужно обновляем.

IE не используем .

До 500 страниц за раз думаю - легко обработает.

Токо кода прилично писать.
PM MAIL ICQ Skype   Вверх
neic
Дата 21.7.2009, 18:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 839
Регистрация: 28.1.2007

Репутация: нет
Всего: 7



SOLAMON, человеку нужно показывать странички. 
GET вернёт исходный код страницы (на сколько я знаю), а следовательно чтобы показать этот код (назовём это действие так) нужно воспользоваться браузером, либо писать свой обработчик этого кода (писать свой браузер=изобретать велосипед).

Можно конечно юзать не IE, а другие движки, например от FireFox или Oper'a (в какой-то теме это уже было сказано).

Как с ними работать есть в нете.
PM MAIL WWW ICQ Skype   Вверх
DeMONiZ
Дата 22.7.2009, 09:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 92
Регистрация: 2.1.2009
Где: Первоуральск

Репутация: нет
Всего: нет



ProgramerForever я смотрю ты с фреймами работаешь может подскажешь как получить исходный код второго фрейма?
PM MAIL WWW   Вверх
ProgramerForever
  Дата 7.9.2009, 05:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 554
Регистрация: 15.11.2006
Где: Новосибирск

Репутация: 2
Всего: 5



Цитата(DeMONiZ @  22.7.2009,  13:39 Найти цитируемый пост)
ProgramerForever я смотрю ты с фреймами работаешь может подскажешь как получить исходный код второго фрейма?

Вот кусок рабочего кода:
Код

strText = WB.Document.frames(0).Document.documentElement.outerHTML 'Лезем во фрейм, и получаем его html-код (для первого фрейма)
strText = WB.Document.frames(1).Document.documentElement.outerHTML 'Лезем во фрейм, и получаем его html-код (для второго фрейма)
'ну, и так далее..


Добавлено через 1 минуту и 26 секунд
Только если на страничке нет фреймов, то программа вылетет с ошибкой. Нужно обработчик отключать строчкой
Код

On Error Resume Next

PM MAIL WWW ICQ   Вверх
ProgramerForever
  Дата 27.3.2010, 00:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 554
Регистрация: 15.11.2006
Где: Новосибирск

Репутация: 2
Всего: 5



Цитата(neic @  21.7.2009,  22:10 Найти цитируемый пост)
SOLAMON, человеку нужно показывать странички. 

Показывать, кстати, необязательно.
Буду рыть в направлении MSWINSCK.OCX
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "VB6"
Akina

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по VB обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • Используйте теги [code=vb][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | VB6 | Следующая тема »


 




[ Время генерации скрипта: 0.0492 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.