14

Birçok, hepsi değilse de modern tarayıcılar ardışık HTTP isteklerini kullanmıyorsunuz. Teoride, pipelining, bir web sitesi almak için gereken gidiş dönüş sürelerini azaltarak istekleri hızlandırmalıdır.Modern tarayıcılarda neden pipelleme devre dışı bırakılır?

HTTP standardına göre, tüm sunucular ,, pipelined istekleri ele almalıdır, bu nedenle sorun, sunucularda destek eksikliğiyle olmamalıdır.

İstemci, sunucu için performans açısından yoğun olan bir URL'ye olabildiğince çok sayıda pipeline isteği gönderdiğinde, alınan herhangi bir yanıtı göz ardı ederek katman 7 DoS saldırısı gibi bazı güvenlik sorunları gördüm.

sunucusu (standardını ihlal) de borulama desteğini kapatmak için bir neden olurdu, ama ben istemcilerde kapatmak için herhangi bir neden bulamıyorum

.

Bu Android tarayıcılarda ve Chrome mobil varsayılan olarak açık ancak almaktadır.

Neden Chrome, Firefox, IE, Opera ve Safari kendi masaüstü pipelined HTTP isteklerini (ve bazen mobil) sürümünü kullanmayan? Kapatmanın ardındaki nedenleri nedir?

+0

Ben pratik bir sorunu çözmeye çalışıyorum çünkü konu dışı olarak bu soruyu kapatmak için oy vereceğim . **, [programlayıcı stackexchange] için daha uygun olabilir (http://programmers.stackexchange.com/help/on-topic). – Quentin

+0

Mümkün yineleme [HTTP pipelining kullanarak dezavantajları nelerdir?] (Http://stackoverflow.com/questions/14810890/what-are-the-disadvantages-of-using-http-pipelining) – Joe

+0

I ' Bunu oylamak kadar m. ** Cevabı bilmek istiyorum! ** – ieXcept

cevap

8

Pipelining aşağıdaki nedenlerle devre dışı:

  • Firefox:

büyük sorun açıkçası engelleme hattı ve performans ve sağlamlık üzerindeki etkisi başkanı olmuştur. Naif boru hatları sadece performansı kötüleştiriyor.

  • Krom: orada kilitlenen böcek bilinen ve ön-of-kuyruğuna sorunlarını engelleme bilindiği gibi

borulama etkinleştirme seçeneği, Chrome'dan kaldırıldı. Sunucular ve ardışık düzen etkinleştirildiğinde kötü ve tutarsız davranmasına middleboxes çok sayıda vardır. Bunlar çözülene kadar, hiç kimsenin pipeline kullanmadığı önerilir. Bunu yapmak şu anda özel bir Chromium yapısı gerektiriyor. Genelde

:

Buggy vekiller hala yaygın ve Web geliştiricileri öngörmek ve kolayca teşhis edemez garip ve düzensiz davranışlara bunlar kurşun bulunmaktadır.

Pipelining doğru bir şekilde uygulanacak kadar karmaşıktır: aktarılan kaynağın boyutu, kullanılacak etkin RTT'nin yanı sıra etkili bant genişliği, boru hattı tarafından sağlanan iyileştirme üzerinde doğrudan bir insidansa sahiptir. Bunları bilmeden, önemli mesajlar önemsiz olanların arkasında gecikebilir. Önemli olan nosyon, sayfa düzeni sırasında bile gelişir! Bu nedenle, HTTP boruhattıları çoğu durumda sadece marjinal bir iyileşme getiriyor.

Pipelining HOL problem tabidir.Yukarıdaki öncelik verilerinden yararlanmak için

HTTP/1.x ile

, tarayıcı sınırlıdır yeteneği:

HTTP/2 bir alternatif sunuyor protokol çoklama desteklemez ve hiçbir yolu yoktur sunucuya istek önceliği iletir. Bunun yerine, her bir kaynak için en fazla altı istekle sınırlı paralellik sağlayan paralel bağlantıların kullanımına güvenmelidir. Sonuç olarak, istemcilerde bir bağlantı bulunana kadar istekler sıraya konur ve gereksiz ağ gecikmesi eklenir. Teoride, HTTP Pipelining bu problemi kısmen çözmeyi denedi, ancak pratikte evlat edinmeyi başaramadı.

HTTP/2, aşağıdaki verimsizlikleri giderir: tarayıcı, tüm istekleri keşfettikleri anda gönderebildiği için istek sıraya koyma ve satır içi engelleme ortadan kaldırılır; tarayıcı, akış önceliklerine ve akışlarına göre akış önceliklendirme tercihini iletebilir. Sunucunun yanıt teslimini daha fazla optimize etmesine izin vermek.

Proxy

yanı kullanılabilir:

Sen KDE3'ün içinde Konqueror hızlandırmak için yaptığı şey deneyebilirsiniz. Konqueror'un HTTP pipeline etmesinden memnun olmadım, bu yüzden bazı aramalardan sonra, yerel bir HTTP/HTTPS/FTP proxy'si olarak Polipo'yu kurdum ve bunu kullanmak için Konqueror'u kurdum (doğru hatırlamıyorsam 8123 numaralı bağlantı noktasında localhost). HTTP pipeline ek olarak, Polipo ayrıca gelişmiş önbellekleme sağladı ve bir proxy olduğundan, her tarayıcıyı kullanacak şekilde ayarlayabilirim ve önbellek tarayıcılar arasında paylaşılırdı. (Bu ayrıca her tarayıcının bağımsız önbelleğe almayı devre dışı bırakmanın iyi bir fikir olduğu anlamına gelir.)

Kaynaklar

+0

Şimdi, mobil tarayıcıların neden devre dışı bırakma eğiliminde olduğunu bilmek istiyorum! Aynı proxy'leri, orta kutuları kullanırlar ve aynı HoL problemine sahip olmalıdırlar (ancak daha yüksek bir gecikme bağlantısı kullandıkları için daha da kötüsü). HTTP/2 elbette gelecekteki bir çözümdür, ancak o zamana kadar. –

+0

Bu ayrımı belgeleyen herhangi bir mobil tarayıcı var mı?Baktım, ama kendi proxy'sini kullanan herhangi bir Opera Mini'sini bulamadım ve hiçbiri mobil veya masaüstü uyumsuzlukları ile ilgili olarak pipelining ya da HTTP uyumu ile ilgili hiçbir şeyi içermiyor. –

+0

Harika cevap! FWIW, https://bugzilla.mozilla.org/show_bug.cgi?id=264354#c65, mobil ve masaüstü farklılıklarına kısaca değiniyor. –