Выполнение 1000+ страниц / мин в среде браузера - PullRequest
3 голосов
/ 01 февраля 2011

Как мне поступить с загрузкой и выполнением (т. Е. Оценить Javascript, построить DOM) при превышении 1000 документов XHTML в минуту?

Некоторые контуры / ограничения:

  • URL-адреса длябыть загружены находятся на разных серверах.
  • Мне нужно пройти - и в идеале изменить результирующий DOM.
  • Нет интереса в рендеринге графики.
  • Пропускная способность не является проблемой.
  • Чрезмерное распараллеливание аппаратного обеспечения было бы более серьезной проблемой.
  • Производственная среда - .NET.

Меня не очень беспокоит загрузка страниц.Я считаю, что на самом деле исключение страницы является узким местом..NET имеет встроенный объект веб-браузера, но я понятия не имею, будет ли он масштабироваться на одной машине.Кроме того, .NET не является абсолютным требованием, но это облегчит интеграцию.

Буду признателен за любые комментарии / указатели относительно:

  • Какой API-интерфейс браузера является наиболее подходящимподходит для этого?
  • Является ли браузер верным путем - может быть, есть более легкий способ выполнения Javascript, который является наиболее важной частью (... но не предоставляет DOM)?
  • Какие существующие продукты / услуги - будь то с открытым исходным кодом или коммерческие - могут выполнить задачу?
  • Примерно сколько страниц в минуту я могу обработать на одной машине (3 мс Chrome делает коммерческий любой)?
  • Любые подводные камни, с которыми можно столкнуться ...

Заранее спасибо,

/ Дэвид

Ответы [ 3 ]

4 голосов
/ 01 февраля 2011

Посмотрите на один из безголовых браузеров для .NET - они будут быстрее, чем BrowserControl, поскольку им не нужно отображать графическое представление.

Я не знаю, позволит ли это вам выполнять 1000 страниц в минуту, но должно быть намного быстрее, чем элемент управления.

Здесь равен единице.

Здесь - сообщение в блоге об использовании HtmlUnit в качестве браузера без монитора.

И ТАК вопрос о безголовых браузерах.

1 голос
/ 11 марта 2011

У меня есть приложение, которое реализовано в WinForms, которое обрабатывает ~ 7800 URL-адресов примерно за 5 минут (загружает URL-адрес, анализирует контент, ищет определенные фрагменты данных и, если находит то, что ищет, выполняет дополнительную обработку этогоpage.

Это конкретное приложение раньше выполнялось от 26 до 30 минут, но, изменив код на TPL (Task Parallel Library в .NET v4.0), оно запускается всего за 5 минут.рабочая станция Dell T7500 с двухъядерными процессорами Xeon (3 ГГц), работающими с 24 ГБ ОЗУ, и 64-разрядная версия Windows 7. Ultimate.

Я просто использую объекты WebClient, Stream и StreamReader в Parallel.ForEach (), и он очень быстрый.

Возможно, не точное решение, которое вы ищете, но в отличие от большинства других публикаций, которые я вижу здесь, это действительно "обрабатывает 1000 страниц в минуту" [иподробнее].

Пища для размышлений ...

0 голосов
/ 01 февраля 2011

Я думаю, что node.js может делать то, что вы хотите, и делать это быстро, если вы не состоите в браке с решением .net. Это определенно имеет реализацию dom.

...