2017-02-06 20 views
1

Я разбираю большие файлы HTML, используя метод document.implementation.createHTMLDocument. Я создаю новые документы, пишу HTML на них, а затем использую стандартные методы документа для итерации по деревьям.Анализ HTML с помощью веб-работников

В браузере это проявляется очень интенсивно, и я ищу другие варианты.

Я думал о разгрузке работы для WebWorkers, но насколько я понимаю, они не могут получить доступ к интерфейсу DOMImplementation.

Я прав в своих предположениях?

Есть ли какая-нибудь другая эффективная альтернатива, которую я могу использовать?

ответ

1

Через минуту после того, как писать этот вопрос, я нашел следующее предложение в jsdom проекта:

Он даже имеет экспериментальную поддержку для запуска в браузерах, давая вам возможность создавать весь DOM документа в веб-работника ,

Итак, я думаю, что буду изучать jsdom и проверять, могу ли я повысить производительность от такого подхода.

Любые другие рекомендации/мысли будут оценены.

1

Это очень важно в браузере, и я ищу другие варианты.

делая то же самый, но в вебе-работнике все равно будет интенсивным, это просто, что интерфейс не будет висеть, делая это, и у вас есть больше клея код/​​поведения, чтобы писать и поддерживать телеграфировать все вверх ,

Я создаю новые документы, нахожу HTML-код на них, а затем использую стандартные методы документа для итерации по деревьям.

Альтернатива, которая может удовлетворить ваш случай, скорее, чем использование разбора на основе DOM, как вы сейчас, - использовать синтаксический анализ на основе событий. https://github.com/isaacs/sax-js или https://github.com/marko-js/htmljs-parser могут быть разумными отправными точками. В зависимости от того, как вы выполняете итерации и что вы делаете с каждым узлом, это может оказаться менее ресурсоемким. Может быть, даже достаточно, чтобы сделать это в потоке пользовательского интерфейса браузера.

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

 Смежные вопросы

  • Нет связанных вопросов^_^