web-dev-qa-db-ja.com

ブラウザで最大パラレルHTTP接続?

HTTPサーバーへの中断された接続をいくつか作成しています(彗星、逆Ajaxなど)。それはうまくいきます、しかし私はブラウザが与えられたドメインへの2つの中断された接続を同時に許すだけであるのを見ます。そのため、ユーザーが自分のブラウザのTab1で自分のWebサイトを見ているときに、Tab2でそのWebサイトをロードしようとすると、自分のサイトへの2つの許可された接続が使い果たされます。

私は私が私の私のhttpサーバに私のサイトへの任意のアドレスを解決させるという、ワイルドカードドメインの事をすることができると思います:

*.example.com/webapp  -> 192.0.2.1 (the actual ip of my server)

そう:

a.example.com/webapp
b.example.com/webapp
c.example.com/webapp

すべてはまだ(www.example.com/webapp)を指していますが、ブラウザはそれらを異なるドメインと見なしますので、2つの接続制限には遭遇しません。これは本当ですか?

たとえになっていても、すべてのドメインで、ブラウザあたりのアクティブ接続数に制限はありますか?私が上のスキームを使うとしましょう - 例えばFirefoxは常に24並列接続しか許しませんか?何かのようなもの:

1) a.example.com/webapp
2) www.download.example/hugefile.Zip
3) b.example.com/webapp
4) c.example.com/webapp
...
24) x.example.com/webapp
25) // Error - all 24 possible connections currently in use!

私はちょうど24接続/ Firefoxを例として選びました。

422
Mark

サーバー/プロキシごとのデフォルトの同時持続接続の最大数

Firefox 2:  2
Firefox 3+: 6
Opera 9.26: 4
Opera 12:   6
Safari 3:   4
Safari 5:   6
IE 7:       2
IE 8:       6
IE 10:      8
Chrome:     6

制限はサーバー/プロキシごとなので、あなたのワイルドカードスキームはうまくいきます。

FYI:これは特にHTTP 1.1に関連しています。他のプロトコルは別々の懸念および制限を有する(すなわち、SPDY、TLS、HTTP 2)。

386
Alsciende

HTTP/1.1

IE 6 and 7:      2
IE 8:            6
IE 9:            6
IE 10:           8
IE 11:           8
Firefox 2:       2
Firefox 3:       6
Firefox 4 to 46: 6
Opera 9.63:      4
Opera 10:        8
Opera 11 and 12: 6
Chrome 1 and 2:  6
Chrome 3:        4
Chrome 4 to 23:  6
Safari 3 and 4:  4

ソース: http://p2p.wrox.com/book-professional-website-performance-optimizing-front-end-back-end-705/

HTTP/2(SPDY)

Multiplexed support(one single TCP connection for all requests)
187

BrowserVersion | ConnectionsPerHostname| MaxConnections

  1. Chrome34/326 10
  2. IE96 35
  3. IE108 17
  4. IE1113 17
  5. Firefox27/266 17
  6. Safari7.0.16 17
  7. Android46 17
  8. ChromeMobile186 16
  9. IE Mobile 96 60

最初の値はConnectionsPerHostname、2番目の値はですMaxConnections.

出典: http://www.browserscope.org/?category=network&v=top

注:ConnectionsPerHostnameは、ブラウザが同じドメインに対して同時に確立するhttp要求の最大数です。同時接続数を増やすために、異なるドメインでリソース(例:イメージ)をホストすることができます。ただし、MaxConnectionsを超えることはできません。これは、ブラウザが開くことのできる最大接続数 - すべてのドメインにわたってです。

92
Razan Paul

さまざまなブラウザで、ホスト名ごとの最大接続数にさまざまな制限があります。正確な数値は http://www.browserscope.org/?category=network で見つけることができます。これはWebパフォーマンスの専門家Steve Souders http://www.stevesouders.com/blog/2008/03/20/roundup-on-parallel-connections/

44
Soroush

Firefoxはその番号をこの設定に保存します(about:configにあります):network.http.max-connections-per-server

最大接続数の場合、Firefoxはこれを次の設定に格納します。network.http.max-connections

14
palswim

私はこの挙動を見たページでテストをしています:

Safari 4: 6  
Chrome 6: 7  
FF 4: 6

編集:Firefoxの4は15の接続を行うことができるはずですが、それは私が観察した動作ではないようです。

8
Jethro Larson

2つの同時要求は、多くのブラウザの設計における意図的な部分です。 「よいhttpクライアント」が故意に固執するというそこに標準があります。その理由については このRFC を調べてください。

5
Josh

GNU/Linux(Ubuntu)上のFirefox 33上のabout:configを見て、connectionsを検索しました。

network.http.max-connections:256

それは一部の答えになる可能性があります、ブラウザ全体のアクティブな接続数には制限があります

network.http.max-proxy-per-persistent-connections-32:32

network.http.maxサーバーごとの持続的接続:6

2つのプロパティをスキップしました...

network.websocket.max-connections:200

(興味深い、サーバーごとに制限されていないが、グローバルhttp接続よりも低いデフォルト値があるようです)

4
orique

各ブラウザにはこのための独自の設定があり、この設定は変更される可能性があるため、これに対する明確な答えはありません。インターネットで検索する場合、この制限を変更する方法を見つけることができます(通常、それらは「パフォーマンス向上方法」としてブランド付けされています)。

1
Blixt
  1. はい、ワイルドカードドメインはあなたのために働くでしょう。
  2. 接続の制限を意識しません。ブラウザ固有のものがある場合は制限します。
1
Ryan Oberoi

私の理解するところでは、接続制限はクライアント側では変更できません。有効にするには、サーバー上で接続制限を変更する必要があります。デフォルトでは、多くのサーバーは固有のクライアントごとに2つの接続しか許可しません。

クライアントはブラウザではなく、TCP/IP要求を発行するクライアントマシンです。

その効果をはっきりと見るために、JMeterのようなものを使ってあなたのサーバーHostへのたくさんのWebサービス呼び出しを起動させましょう。これに関する驚くべきことは、SOAショップにとって、これは非常に重要ですが、それを実際に知っている人はほとんどいません。

1

サーバーごとのブラウザの最大接続数を(サイトによっては推奨されるように)過度な数に増やすと、サーバー上の同時接続の総数を制限するホスティングプランで他のユーザーを小規模サイトから締め出すことができます。

1
John A.