0

10個のIPが割り当てられたsquidプロキシサーバーがあるとします(ローカルでgigEネットワーク上に)。

また、異なる10個のIPが割り当てられた別のサーバーがあり、10個のスレッドを実行しているac#アプリケーションを実行していて、各スレッドがWebサイトのクロールに使用されているとします。割り当てられた異なるIPを使用してHTTPリクエストを送信する各スレッド。

私の質問は、そのアプリケーションで10個のスレッドを実行し、各スレッドがプロキシサーバーからのプロキシIPを使用してWebサイトをクロールする場合です。また、そのアプリで10個のスレッドを試します。各スレッドは、サーバー上でローカルに割り当てられたIPを直接使用して、サイトをクロールします。ページからページへとサイトをクロールするのに、プロキシIPを使用するスレッド、または独自のサーバーからの直接IPを使用するスレッドのどちらが高速になりますか?

プロキシサーバーには固有の遅延があるため、サーバー上の直接IPを想像しますが、プロキシサーバーを示すことはわずかに高速です。だから私は混乱しています。直接IPを使用するとある程度の処理能力が使用され、プロキシサーバーを使用することで、その処理をプロキシサーバーにアウトソーシングできるためかもしれません。ヘルプは大歓迎です。

4

1 に答える 1

0

10の異なるスレッドが「サイトをクロール」するとおっしゃいましたが、これは、同じサイトの異なるページをスクレイピングする10のスレッドがあるように聞こえます。

この場合、プロキシを使用する方が速いことがよくあります。ほとんどのhtmlページは次のようになっていることに注意してください。

foo1.html
  |
  +--- Link: somefile01.xml
  |
  +--- Link: somestlyesheet.css
  |
  +--- Image: somepicture01.jpg
  |
  +--- Image: somepicture02.jpg

foo2.html
  |
  +--- Link: somefile01.xml
  |
  +--- Link: somestlyesheet.css
  |
  +--- Image: somepicture01.jpg
  |
  +--- Image: somepicture03.jpg

実際のWebブロワーがプルした後、、、、、および(通常は並行して)のhttpGETを実行foo1.htmlします。おそらく、同じサイトからページをスクレイピングすると、コンテンツに共通の重複があるページ(上記のとの間など)をスクレイピングしていることになります。somefile01.xmlsomestylesheet.csssomepicture01.jpgsomepicture02.jpgfoo1.htmlfoo2.html

プロキシでhttpオブジェクトのキャッシュを有効にしている場合、これらのファイルの一部でキャッシュヒットが発生するため、スレッドが高速になります。キャッシュヒットが発生した場合、ファイルは、毎回リモートサーバーからソースを取得するのではなく、LAN上のSquidキャッシュからローカルにコードに配信されます。

すべてが異なるサイトをクロールする10個のスレッドがある場合、それらに含まれる唯一のファイルがのようなものでない限り、パフォーマンスが低下することが予想されますjquery.js。ちなみに、グーグルはウェブ開発者に彼らのキャッシュを使っていくつかの共通のjavascriptファイルをロードする方法を提供します。

于 2012-05-20T10:28:16.900 に答える