私は、1 つの引数 (URL) を取り、その URL から解決された DOM を表す html を返す、内部で使用するための Web サービスを計画しています。解決済みとは、Web サービスが最初にその URL でページを取得し、PhantomJS を使用してページを「レンダリング」し、すべての DHTML、AJAX 呼び出しなどが実行された後に結果のソースを返すことを意味します。ただし、リクエストごとにファントムを起動する (私は現在行っています) のは遅すぎます。Web サービスへの最新の呼び出しを提供するために常に利用できる PhantomJS インスタンスのプールが必要です。
以前にこの種の作業が行われたことはありますか? プール マネージャー/http プロキシ サーバーを自分でゼロから作成するよりも、この Web サービスを他のユーザーの作業に基づいて作成したいと考えています。
詳細なコンテキスト: これまでに見た 2 つの同様のプロジェクトと、それぞれを回避した理由を以下にリストしました。代わりに、PhantomJS インスタンスのプールを管理することについてこの質問が発生しました。
jsdom - 私が見たところ、ページ上でスクリプトを実行するための優れた機能を備えていますが、ブラウザの動作を複製しようとはしていないため、汎用の「DOM リゾルバー」として使用すると、.あらゆる種類のエッジ ケース、イベント呼び出しなどを処理するための多くの余分なコーディング。最初に見た例は、ノードを使用してセットアップしたテスト アプリの body タグの onload() 関数を手動で呼び出さなければならないことでした。深いうさぎの穴の始まりのように思えました。
Selenium - 非常に多くの可動部分があるため、長期間存続するブラウザー インスタンスを管理するためのプールのセットアップは、PhantomJS を使用するよりも複雑になります。マクロの記録/スクリプトの利点は必要ありません。Webページを取得してDOMを解決するのと同じくらいパフォーマンスの高いWebサービスが欲しいだけです(または、画像などを無視できるようにすればさらに高速です)。