Несколько браузеров против нескольких вкладок в Puppeteer - PullRequest
0 голосов
/ 07 сентября 2018

У меня есть 100 веб-страниц, которые я должен проверить на ошибки во время выполнения. Я нашел плагин Puppeteer, который может делать это "без пота", но столкнулся с одной дилеммой: иметь один запущенный браузер с несколькими вкладками или новый браузер для каждой ссылки. Каков наилучший подход в этом случае?

В случае нескольких вкладок, я слышал, есть вероятность, что анимация css и что-то еще (не помню сейчас) не будут работать, когда вкладка не в фокусе.

Несколько браузеров, очевидно, вызывают более высокую загрузку процессора (нет?)

1 Ответ

0 голосов
/ 08 сентября 2018

Вот преимущества каждого метода на мой взгляд:

Преимущество нескольких браузеров:

  • Отдельные процессы: в случае сбоя одного браузера другие браузеры продолжают работать

Преимущество одного браузера (с несколькими страницами):

  • Меньше использования памяти: хотя на самом деле использование памяти и процессора в большой степени зависит от выполняемой задачи (скриншот, манипуляции с DOM)
  • Файлы cookie (и другие данные) являются общими

Существует также возможность использования нескольких контекстов , для которых требуется меньше памяти, чем в двух отдельных браузерах, но нет общих файлов cookie.

Так что на самом деле, вы, вероятно, должны просто попробовать оба варианта. Возможно, вы захотите взглянуть на библиотеку puppteer-cluster , которую я написал, которая также занимается обработкой ошибок и перезапуском браузера в случае сбоев.

Вы можете просто написать свой код и переключаться между несколькими браузерами и несколькими страницами одной строкой:

const cluster = await Cluster.launch({
    concurrency: Cluster.CONCURRENCY_PAGE, // which kind of concurrency
    maxConcurrency: 2, // number of parallel workers
});

Просто замените CONCURRENCY_PAGE на CONCURRENCY_BROWSER, чтобы попробовать несколько браузеров. Существует также третий вариант CONCURRENCY_CONTEXT, который вы можете попробовать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...