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を例として選びました。
サーバー/プロキシごとのデフォルトの同時持続接続の最大数
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)。
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/
Multiplexed support(one single TCP connection for all requests)
BrowserVersion | ConnectionsPerHostname| MaxConnections
最初の値はConnectionsPerHostname、2番目の値はですMaxConnections.
出典: http://www.browserscope.org/?category=network&v=top
注:ConnectionsPerHostnameは、ブラウザが同じドメインに対して同時に確立するhttp要求の最大数です。同時接続数を増やすために、異なるドメインでリソース(例:イメージ)をホストすることができます。ただし、MaxConnectionsを超えることはできません。これは、ブラウザが開くことのできる最大接続数 - すべてのドメインにわたってです。
さまざまなブラウザで、ホスト名ごとの最大接続数にさまざまな制限があります。正確な数値は http://www.browserscope.org/?category=network で見つけることができます。これはWebパフォーマンスの専門家Steve Souders http://www.stevesouders.com/blog/2008/03/20/roundup-on-parallel-connections/
Firefoxはその番号をこの設定に保存します(about:config
にあります):network.http.max-connections-per-server
最大接続数の場合、Firefoxはこれを次の設定に格納します。network.http.max-connections
私はこの挙動を見たページでテストをしています:
Safari 4: 6
Chrome 6: 7
FF 4: 6
編集:Firefoxの4は15の接続を行うことができるはずですが、それは私が観察した動作ではないようです。
2つの同時要求は、多くのブラウザの設計における意図的な部分です。 「よいhttpクライアント」が故意に固執するというそこに標準があります。その理由については このRFC を調べてください。
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接続よりも低いデフォルト値があるようです)
各ブラウザにはこのための独自の設定があり、この設定は変更される可能性があるため、これに対する明確な答えはありません。インターネットで検索する場合、この制限を変更する方法を見つけることができます(通常、それらは「パフォーマンス向上方法」としてブランド付けされています)。
私の理解するところでは、接続制限はクライアント側では変更できません。有効にするには、サーバー上で接続制限を変更する必要があります。デフォルトでは、多くのサーバーは固有のクライアントごとに2つの接続しか許可しません。
クライアントはブラウザではなく、TCP/IP要求を発行するクライアントマシンです。
その効果をはっきりと見るために、JMeterのようなものを使ってあなたのサーバーHostへのたくさんのWebサービス呼び出しを起動させましょう。これに関する驚くべきことは、SOAショップにとって、これは非常に重要ですが、それを実際に知っている人はほとんどいません。
サーバーごとのブラウザの最大接続数を(サイトによっては推奨されるように)過度な数に増やすと、サーバー上の同時接続の総数を制限するホスティングプランで他のユーザーを小規模サイトから締め出すことができます。