537

HTTP サーバー (コメット、リバース AJAX など) への中断された接続をいくつか作成しています。正常に動作しますが、ブラウザは、特定のドメインへの一時停止された 2 つの接続しか同時に許可しないことがわかります。したがって、ユーザーがブラウザの Tab1 で私の Web サイトを見ていて、それを Tab2 でも読み込もうとすると、サイトへの 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 を選択しました。

4

11 に答える 11

213

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)
于 2013-02-08T08:11:17.977 に答える
153
 BrowserVersion | ConnectionsPerHostname | MaxConnections
----------------------------------------------------------
 Chrome34/32    | 6                      | 10
 IE9            | 6                      | 35
 IE10           | 8                      | 17
 IE11           | 13                     | 17
 Firefox27/26   | 6                      | 17
 Safari7.0.1    | 6                      | 17
 Android4       | 6                      | 17
 ChromeMobile18 | 6                      | 16
 IE Mobile9     | 6                      | 60

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

ソース: http://www.browserscope.org/?category=network&v=top

注: ConnectionsPerHostnameは、ブラウザーが同じドメインに対して行う同時 HTTP 要求の最大数です。同時接続数を増やすために、リソース (画像など) を異なるドメインでホストできます。ただし、すべてのドメインにわたって、ブラウザーが合計で開く接続の最大数であるMaxConnectionsを超えることはできません 。

2020年アップデート

ブラウザごとの並列接続数

| Browser              | Connections per Domain         | Max Connections                |
| -------------------- | ------------------------------ | ------------------------------ |
| Chrome 81            | 6 [^note1]                     | 256[^note2]                    |
| Edge 18              | *same as Internet Explorer 11* | *same as Internet Explorer 11* |
| Firefox 68           | 9 [^note1] or 6 [^note3]       | 1000+[^note2]                  |
| Internet Explorer 11 | 12 [^note4]                    | 1000+[^note2]                  |
| Safari 13            | 6 [^note1]                     | 1000+[^note2]                  |
  • [^note1]: 72 リクエスト、1 ドメイン (127.0.0.1) でテスト済み
  • [^note2]: 1002 リクエストでテスト済み、ドメインあたり 6 リクエスト * 167 ドメイン (127.0.0.*)
  • [^note3]: setTimeout、 + requestAnimationFramethen...のコールバックなど、非同期コンテキストで呼び出された場合
  • [^note4]: 最後の 6 つはフォローアップです (2、4、6 はそれぞれ 0.5 秒、1 秒、1.5 秒で利用可能)。
于 2015-05-05T22:56:21.643 に答える
42

ブラウザによって、ホスト名ごとの最大接続数にさまざまな制限があります。正確な数値はhttp://www.browserscope.org/?category=networkで確認できます。 また、Web パフォーマンスの専門家である Steve Souders による接続制限に関する興味深い記事があります http://www.stevesouders.com/blog/2008/ 03/20/並列接続のまとめ/

于 2011-05-15T21:55:41.053 に答える
13

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

最大接続数については、Firefox はそれを次の設定に保存します。network.http.max-connections

于 2010-08-27T16:34:38.457 に答える
5

about:configGNU/Linux (Ubuntu) 上の Firefox 33 を見て、検索すると次のconnectionsことがわかりました。

network.http.max-connections: 256

それは、すべてのドメインにわたって、ブラウザごとのアクティブな接続の数に制限があるという部分に答える可能性があります

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

network.http.max-persistent-connections-per-server: 6

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

network.websocket.max-connections: 200

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

于 2014-11-12T09:17:46.193 に答える
4

2 つの同時リクエストは、多くのブラウザーの設計の意図的な部分です。「優れた http クライアント」が意図的に準拠している標準があります。理由については、この RFCを参照してください。

于 2009-06-12T13:06:31.763 に答える
3

サーバーあたりのブラウザーの最大接続数を過剰に増やすと(一部のサイトが示唆しているように)、サーバー上の同時接続の総数を制限するホスティングプランを使用して、他のユーザーを小さなサイトから締め出すことができます。

于 2010-11-08T18:41:13.653 に答える
2

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

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

効果を非常に明確に確認するには、JMeter のようなものを使用して、サーバー ホストへの一連の Web サービス呼び出しを開始します。最初の 2 つを受け入れ、2 つのうちの 1 つが完了するまで別の呼び出しを受け入れません。これの驚くべき点は、SOA ショップにとってこれは非常に重要なことですが、実際にそれを認識している人はほとんどいないということです。

于 2015-09-30T20:51:44.863 に答える
1

各ブラウザーには独自の構成があり、この構成は変更される可能性があるため、これに対する決定的な答えはありません。インターネットで検索すると、この制限を変更する方法を見つけることができます (通常、それらは「パフォーマンス向上方法」としてブランド化されています)。Web サイトで必要な場合は、ユーザーにそうするようにアドバイスする価値があるかもしれません。

于 2009-06-12T07:26:08.947 に答える
1
  1. はい、ワイルドカード ドメインを使用できます。
  2. 接続の制限を認識していません。ブラウザ固有の制限がある場合。
于 2009-06-12T07:27:24.030 に答える