Я планирую веб-сервис для собственного использования внутри, который принимает один аргумент, URL-адрес и возвращает html, представляющий разрешенную DOM с этого URL-адреса. По разрешению я имею в виду, что webservice сначала получит страницу по этому URL-адресу, а затем использует PhantomJS для "рендеринга" страницы, а затем возвращает результирующий источник после того, как все DHTML, вызовы AJAX и т.д. Будут выполнены. Однако запуск phantom для каждого запроса (который я делаю сейчас) слишком медленный. Я бы предпочел иметь пул экземпляров PhantomJS, один из которых всегда доступен для обслуживания последнего вызова моего веб-сервиса.
Проделана ли какая-либо работа над этим видом раньше? Я предпочел бы основывать этот веб-сервис на работе других, чем писать пул-менеджер/HTTP-прокси-сервер для себя с нуля.
Больше контекста. Я перечислил 2 похожих проекта, которые я видел до сих пор ниже, и почему я избегал каждого из них, в результате чего возникает вопрос об управлении пулом экземпляров PhantomJS.
jsdom - из того, что я видел, у него отличная функциональность для выполнения скриптов на странице, но он не пытается реплицировать поведение браузера, поэтому, если бы я использовал его как универсальный "DOM resolver", в конечном итоге, есть много дополнительного кодирования для обработки всех случаев краев, вызова событий и т.д. В первом примере, который я видел, нужно вручную вызвать функцию onload() тега body для тестового приложения, которое я установил, используя node. Это казалось началом глубокой кроличьей дыры.
Selenium - у него просто намного больше движущихся частей, поэтому настройка пула для управления долговечными экземплярами браузера будет сложнее, чем использование PhantomJS. Мне не нужны какие-либо преимущества для записи макросов/сценариев. Я просто хочу, чтобы веб-сервис, который так же эффективен при получении веб-страницы и разрешал его DOM, как если бы я просматривал этот URL-адрес с помощью браузера (или даже быстрее, если я могу заставить его игнорировать изображения и т.д.).