在領(lǐng)英,我們使用數(shù)據(jù)來改善會員在使用我們的網(wǎng)站時的體驗。在視頻團隊中,我們重視評估指標(biāo),這些指標(biāo)可以幫助我們了解視頻的加載時間,為什么某些視頻比其他視頻更受關(guān)注,以及我們的成員如何傾向于與網(wǎng)絡(luò),iOS和Android上的視頻進行交互。簡而言之,可以利用LinkedIn上的視頻播放過程中收集的各種數(shù)據(jù)點來推動視頻性能的強大提高。
技術(shù)用語
這篇文章將提及以下術(shù)語,為方便起見,以下定義:
·iframe:可以在其中呈現(xiàn)外部網(wǎng)頁內(nèi)容的元素。這對于視頻而言非常有用,因為它使我們能夠直接在我們的網(wǎng)站內(nèi)呈現(xiàn)來自第三方(例如,Youtube,Vimeo)域的視頻。
·視口:網(wǎng)站在屏幕上可見的部分。
·DOM:網(wǎng)頁的表示形式,是由許多內(nèi)容節(jié)點組成的樹。
播放期間捕獲數(shù)據(jù)
我們的系統(tǒng)捕獲有關(guān)視頻在播放過程中的表現(xiàn)的大量數(shù)據(jù)。我們發(fā)現(xiàn),通過關(guān)注以下數(shù)據(jù)點,我們能夠極大地改善LinkedIn.com上的視頻性能:
·媒體初始化開始:播放器開始初始化時。
對于通過iframe播放的視頻(例如第三方視頻),該指標(biāo)標(biāo)記了何時在頁面上首次呈現(xiàn)iframe。
對于直接在頁面上呈現(xiàn)的HTML5或本機視頻,該指標(biāo)標(biāo)記視頻播放器發(fā)出loadstart事件的時間。
·媒體初始化結(jié)束:播放器初始化完成時。
此指標(biāo)實質(zhì)上標(biāo)記了視頻何時發(fā)出了loaddata事件。
·媒體緩沖開始:在視頻播放之前,媒體首次開始緩沖時。
·媒體緩沖結(jié)束:當(dāng)媒體停止緩沖時,就在視頻開始播放之前。
·開始時間(TTS):播放器初始化到播放器準(zhǔn)備播放視頻之間的時間。
注意:這是視頻在初始化和緩沖中花費的時間總和。
·感知開始時間(PTTS):從成員請求播放視頻到實際開始播放之間的時間。
·媒體初始化時間:媒體初始化開始和媒體初始化結(jié)束事件之間的時間。
·媒體初始化速率:一個數(shù)據(jù)點,用于確定進入視口并在退出視口之前成功加載的視頻的百分比。
如果該速率下降,則表明我們的視頻可能需要很長時間才能加載。
在本文的后面,我們將放大一些實驗,這些實驗利用了上述許多數(shù)據(jù)點來改進我們最重要的指標(biāo)之一PTTS。
利用數(shù)據(jù)使我們的會員受益
現(xiàn)在,我們已經(jīng)積累了豐富的,有見地的視頻播放數(shù)據(jù),我們?nèi)绾问褂盟鼇砀纳茣T的體驗?我們通過兩種方法解決這個問題。
詳細的實時指標(biāo)報告
在LinkedIn,我們利用多種內(nèi)部工具和服務(wù),使我們能夠?qū)崟r存儲數(shù)據(jù)并可視化這些數(shù)據(jù)中的更改。InGraphs是特別有用的工具之一,它使我們能夠可視化跨產(chǎn)品收集的許多數(shù)據(jù)點。
除了InGraphs提供的圖表外,我們還提供服務(wù),如果任何核心指標(biāo)低于預(yù)設(shè)的閾值,它們會通知相關(guān)團隊。這些工具使我們能夠在發(fā)現(xiàn)其中一種產(chǎn)品的會員體驗下降時立即采取行動。
對功能進行持續(xù)的A/B測試
我們一直在嘗試新功能,并對現(xiàn)有功能進行調(diào)整,其首要目標(biāo)是為我們的會員提供最佳體驗。我們將指標(biāo)與InGraphs之類的報告工具結(jié)合使用,以清晰描繪給定實驗如何影響我們網(wǎng)站上的用戶互動。
例如,假設(shè)有一個虛擬實驗,其中我們測試了在每個成員的供稿中的前三十個帖子中僅顯示視頻內(nèi)容的效果。最初,這項實驗似乎很成功,因為我們的成員觀看的視頻數(shù)量有所增加。但是,仔細查看InGraphs后,我們注意到成員共享的帖子數(shù)量有所下降。通過了解這種相關(guān)性并考慮到這兩種影響,由于對會員體驗產(chǎn)生負面影響,實驗將終止。
確保我們的數(shù)據(jù)準(zhǔn)確
數(shù)據(jù)僅在準(zhǔn)確時才有用。如果我們不能相信我們存儲的數(shù)據(jù)是準(zhǔn)確的,那么就沒有依據(jù)來測試我們創(chuàng)建的各種實驗。除了上述數(shù)據(jù)監(jiān)視服務(wù)外,我們還大量使用自動化(單元,集成和驗收)測試,以確保給定的功能正常工作。就像您想象的那樣,在開發(fā)新功能時,無法以LinkedIn的規(guī)模進行擴展以手動測試所有現(xiàn)有功能。取而代之的是,將測試用于隔離地運行現(xiàn)有功能,并確保通過各種交互,功能可以按預(yù)期運行。例如,我們可以編寫一個測試來斷言,單擊視頻的播放按鈕會導(dǎo)致視頻開始播放,并捕獲有關(guān)視頻加載性能的數(shù)據(jù)。因此,自動化測試使我們的工程師能夠保證在創(chuàng)建功能后很長一段時間內(nèi),由其功能發(fā)出的度量標(biāo)準(zhǔn)就準(zhǔn)確無誤。除了自動測試之外,LinkedIn工程師還有一些方便的工具,以方便驗證給定功能發(fā)出的指標(biāo)。
使用數(shù)據(jù)進行視頻表演
由于視頻資產(chǎn)的自然大小,視頻性能需要一種獨特的方法:我們需要一種下載足夠多的視頻以便立即開始播放的方法,同時還確保我們不會減慢其余視頻的速度。元素呈現(xiàn)在頁面上。
案例研究:感知的開始時間(PTTS)
在LinkedIn,我們測量感知的加載時間,以了解會員等待視頻播放的時間。我們用來了解視頻加載所需時間的主要指標(biāo)是啟動時間(PTTS)。PTTS可以測量瀏覽器下載視頻所需的時間,以及視頻在播放之前進行緩沖所花費的時間。
讓我們看一下上面的圖表,該圖表提供了對特定成員在等待視頻加載中的體驗的一些見解。視頻進入視口后,初始化視頻需要2700毫秒,然后需要3300毫秒的視頻緩沖才能開始播放視頻。在這種情況下,PTTS大約為6,000ms?,F(xiàn)在,我們可以將此指標(biāo)以及數(shù)百萬個其他數(shù)據(jù)點用作實驗準(zhǔn)則,以加快視頻加載速度。下面讓我們看一下我們運行的幾個實驗。
盡早加載DOM中的所有視頻
在LinkedIn,我們已經(jīng)嘗試過懶惰地加載視頻。急于加載視頻是在視頻進入DOM后立即開始下載。這與延遲加載不同,延遲加載是通過延遲加載直到進入視口才下載視頻。預(yù)先加載允許視頻在進入視口之前先在背景中加載。這提供了出色的用戶體驗,因為視頻在進入視口后幾乎沒有緩沖就可以開始播放。乍看之下,此實驗之所以成功,是因為它降低了PTTS,這意味著視頻似乎可以在更短的時間內(nèi)開始播放。但是,當(dāng)我們仔細查看指標(biāo)時,我們發(fā)現(xiàn)了一些有趣的結(jié)果。雖然我們帶寬更大的成員確實確實在PTTS方面有所下降,帶寬較弱的用戶經(jīng)歷了媒體初始化速率的降低和媒體初始化時間的增加。例如,想象一下,一個成員乘坐地鐵在他或她的手機上滾動瀏覽LinkedIn訂閱源。鑒于地鐵的互聯(lián)網(wǎng)連接薄弱,該成員將已經(jīng)在加載內(nèi)容方面面臨滯后,更不用說視頻資產(chǎn)了。在急切加載的情況下,我們不僅要在視口中下載內(nèi)容,而且還要嘗試將視頻加載到幕后。您可能會想到,這會在成員相對較弱的連接上施加過大的負載,從而可能導(dǎo)致Feed的任何帖子均未加載。這種現(xiàn)象解釋了前面提到的降低的媒體初始化速率和增加的媒體初始化時間,這是我們進行下一個實驗的動機。
排隊的視頻加載
排隊加載是一種加載策略,在該策略中,將視頻添加到加載隊列并一次加載一個,而不是一次加載DOM中的所有視頻(急切加載就是這種情況)。排隊加載的目的是結(jié)合快速加載(PTTS減少)和延遲加載(對于網(wǎng)絡(luò)帶寬較小的成員更易訪問)的好處。它是通過將視頻加載到視口之外來完成此操作的,但是只有在成功加載視口中的視頻后才能這樣做。在排隊加載的情況下,我們觀察到PTTS略有增加,這可能是因為在視口之外加載的視頻較少,但是對于網(wǎng)絡(luò)連接較弱的成員,媒體初始化速率有所提高,媒體初始化時間有所減少。
結(jié)論
視頻資產(chǎn)的巨大規(guī)模以及對它的快速加載而不會對網(wǎng)站的其他速度產(chǎn)生負面影響的期望,使得視頻性能在規(guī)模上成為一個固有的難題。為了使問題進一步復(fù)雜化,我們還必須考慮網(wǎng)絡(luò)速度和瀏覽器功能的差異,以及在運行與性能相關(guān)的實驗之前,成員使用我們網(wǎng)站的方式不同。通過正確使用數(shù)據(jù),我們可以快速查明并迭代性能下降,同時確保在此過程中不會出現(xiàn)性能下降。
致謝
我要感謝Shane Afsar和Kris Teehan在撰寫本文中所提供的幫助,以及Kevin O'Connell和LinkedIn Engineering Blog團隊在編輯本文中所提供的幫助。向紐約市的視頻團隊大喊大叫,不懈地致力于改善視頻性能和整體視頻體驗。
原標(biāo)題:How LinkedIn Uses Data to Improve Video Performance