Saya membuat beberapa koneksi yang ditangguhkan ke server HTTP (comet, reverse ajax, dll). Ini berfungsi baik, tapi saya melihat browser hanya memungkinkan dua koneksi yang ditangguhkan ke domain yang diberikan secara bersamaan. Jadi jika pengguna melihat situs web saya di Tab1 pada peramban mereka, kemudian juga mencoba memuatnya di Tab2, mereka telah menggunakan dua koneksi yang diizinkan ke situs saya.
Saya pikir saya dapat melakukan beberapa hal wildcard domain, di mana saya memiliki server http saya menyelesaikan alamat apa pun ke situs saya seperti:
*.example.com/webapp -> 192.0.2.1 (the actual ip of my server)
begitu:
a.example.com/webapp
b.example.com/webapp
c.example.com/webapp
semua masih menunjuk ke ( www.example.com/webapp
) tetapi browser menganggap mereka domain yang berbeda, jadi saya tidak mengalami 2 batas koneksi. Apakah ini benar?
Bahkan jika itu adalah benar - apakah ada batas untuk jumlah koneksi aktif per peramban, di semua domain? Katakanlah saya menggunakan skema di atas - apakah Firefox misalnya hanya mengizinkan 24 koneksi paralel pada waktu tertentu? Sesuatu seperti:
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!
Saya baru saja memilih 24 koneksi / Firefox sebagai contoh.
sumber
Jawaban:
Jumlah maksimum koneksi persisten simultan per server / proxy:
Batasnya adalah per-server / proxy, sehingga skema wildcard Anda akan berfungsi.
FYI: ini secara khusus terkait dengan HTTP 1.1; protokol lain memiliki masalah dan keterbatasan yang terpisah (yaitu, SPDY, TLS, HTTP 2).
sumber
HTTP / 1.1
sumber: http://p2p.wrox.com/book-professional-website-performance-optimizing-front-end-back-end-705/
HTTP / 2 (SPDY)
sumber
Nilai pertama adalah ConnectionsPerHostname dan nilai kedua adalah MaxConnections .
Sumber: http://www.browserscope.org/?category=network&v=top
Catatan: ConnectionsPerHostname adalah jumlah maksimum permintaan http bersamaan yang akan dilakukan browser ke domain yang sama. Untuk meningkatkan jumlah koneksi bersamaan, seseorang dapat meng-host sumber daya (misalnya gambar) di domain yang berbeda. Namun, Anda tidak dapat melebihi MaxConnections , jumlah koneksi maksimum yang akan dibuka browser secara total - di semua domain.
Pembaruan 2020
Jumlah koneksi paralel per browser
setTimeout
, +requestAnimationFrame
,then
...sumber
Berbagai browser memiliki berbagai batasan untuk koneksi maksimum per nama host; Anda dapat menemukan angka pastinya di http://www.browserscope.org/?category=network dan di sini ada artikel menarik tentang batasan koneksi dari pakar kinerja web Steve Souders http://www.stevesouders.com/blog/2008/ 03/20 / roundup-on-parallel-koneksi /
sumber
Firefox menyimpan nomor itu dalam pengaturan ini (Anda menemukannya
about:config
):network.http.max-connections-per-server
Untuk koneksi maksimal, Firefox menyimpannya dalam pengaturan ini:
network.http.max-connections
sumber
network.http.max-connections
adalah 900 secara default, yang tidak berhubungan dengan jumlah maksimum koneksi paralel yang melalui pengujian versi 52 masih 17.network.http.max-persistent-connections-per-server
benar-benarMelakukan pengujian pada halaman saya melihat perilaku ini:
Sunting: Tampaknya firefox 4 seharusnya dapat melakukan 15 koneksi tapi itu bukan perilaku yang saya amati.
sumber
2 permintaan bersamaan adalah bagian yang disengaja dari desain banyak browser. Ada standar di luar sana yang "klien http baik" mematuhi sengaja. Lihatlah RFC ini untuk mengetahui alasannya.
sumber
Melihat di
about:config
Firefox 33 di GNU / Linux (Ubuntu), dan mencariconnections
saya menemukan:Itu kemungkinan menjawab bagian apakah ada batasan jumlah koneksi aktif per browser, di semua domain
melewatkan dua properti ...
(Menarik, sepertinya mereka tidak terbatas per server tetapi memiliki nilai default lebih rendah dari koneksi http global)
sumber
Perhatikan bahwa meningkatkan koneksi maks browser per server ke jumlah yang berlebihan (seperti yang disarankan beberapa situs) dapat dan memang mengunci pengguna lain dari situs kecil dengan paket hosting yang membatasi total koneksi simultan di server.
sumber
Pemahaman saya adalah bahwa batas koneksi tidak dapat diubah di sisi klien. Batas koneksi harus diubah pada server untuk memiliki efek apa pun. Secara default, banyak server hanya akan mengizinkan 2 koneksi per klien unik.
Klien bukan browser, itu adalah mesin klien yang mengeluarkan permintaan TCP / IP.
Untuk melihat efeknya dengan sangat jelas, gunakan sesuatu seperti JMeter untuk memecat sekelompok panggilan layanan web ke host server Anda - ia akan menerima dua yang pertama dan tidak akan menerima yang lain sampai salah satu dari keduanya selesai. Hal yang menakjubkan tentang ini adalah bahwa untuk toko SOA, ini sangat penting, namun hampir tidak ada orang yang benar-benar menyadarinya.
sumber
Tidak ada jawaban pasti untuk ini, karena setiap browser memiliki konfigurasi sendiri untuk ini, dan konfigurasi ini dapat diubah. Jika Anda mencari di internet, Anda dapat menemukan cara untuk mengubah batas ini (biasanya mereka dicap sebagai "metode peningkatan kinerja.") Mungkin ada baiknya menyarankan pengguna Anda untuk melakukannya jika diperlukan oleh situs web Anda.
sumber
sumber