2011-08-19 254 views
0

我正在開發一項服務,人們可以同時傳輸多個音頻文件。瀏覽器HTTP連接限制和YouTube

不幸的是,當同時流式傳輸大約4個數據流時,Chrome的HTTP連接限制似乎已經啓動:當前一個連接關閉時,新的數據流請求只能在服務器上驅動。

有趣的是,我可以在YouTube上同時播放10多個視頻。

YouTube在這裏使用了什麼樣的技術來規避瀏覽器的同時http連接限制?

回答

1

我想這裏的關鍵點在於,YouTube流不是直接由瀏覽器控制,它們是嵌入式Flash播放器,它使用由Flash處理的流。如果您想將流式處理交給外部應用程序/庫(Flash,Java等),則可以輕鬆避開這些限制。

另一個問題是YouTube有一個巨大的CDN,因此不能保證你從同一臺服務器上獲得任何兩個視頻,這也有助於規避併發限制(至少到某一點)。

我不會感到驚訝的是,Chrome在一段時間後會阻止你,因爲Google前段時間在瀏覽器併發性和相對效率方面進行了大量的研究和實驗,並且我記得在某處他們得出結論:同一臺服務器代表了直接HTTP上最高效的數據傳輸架構。令人煩惱的是,我找不到有信譽的來源來引用(儘管我從第一位獲得),但是this是相關的,可能是同一研究計劃的一部分。

這也是這類研究的Facebook得到相當積極參與,你可能會超過在http://developers.facebook.com/找到一些有用的信息,如果您可以通過困擾的垃圾篩選找到它......

+0

出人意料的是,這兩個我的上傳和聲音流媒體庫使用Flash。我可能遇到了一些其他問題,導致同時http連接出現問題。無論如何,進一步的請求不會到達服務器端。由於問題可能在其他地方,我會接受你的答案。不幸的是,我現在不知道該去哪裏看。 – Tom

+0

現在,我調試了更多,它__has__是一個併發連接限制,因爲它正在排隊,因爲它會在一段時間後到達服務器。我也確定它使用的是Flash。你確定這個問題不適用於Flash嗎?這看起來似乎很明顯。 – Tom

+0

說實話,這不是我以前碰到的問題,因爲我處理的媒體流應用程序在任何時候最多隻能播放1個播放請求和2個緩存請求 - 這是所有必需的,因爲你只能一次只播放一個流。你到底需要做什麼?你能結合服務器端的流來減少請求的數量嗎? – DaveRandom