Přejít k hlavnímu obsahu

Co je Big Pipe?

Existuje několik technologií běžně používaných k zajištění rychlého načítání webových stránek. Například skeleton loading a AJAX jsou některé z těchto technologií. Tyto technologie poskytují uživatelům rychlé výsledky a vytvářejí dojem, že se webová stránka načítá rychleji.
Aytan Rustamova
Aytan Rustamova
10 min. read
bigpipe

Jelikož se zvyšuje používání internetu, rostou také očekávání lidí od webových stránek. Podle výzkumu je množství času, který uživatelé stráví na webové stránce, přímo úměrné rychlosti načítání stránky. Existuje několik technologií běžně používaných k zajištění rychlého načítání webových stránek. Například skeleton loading a AJAX jsou mezi těmito technologiemi. Tyto technologie poskytují uživatelům rychlé výsledky, což jim dává dojem, že se webová stránka načítá rychleji.

Kromě těchto technologií Facebook představil svou vlastní technologii nazvanou BigPipe. Co je BigPipe a jak se liší od ostatních technologií? Pokud se podíváme na webové stránky, všechny fungují na základě logiky požadavku a odpovědi. Uživatel odešle požadavek serveru, server připraví odpověď podle požadavku a poté vidíme výsledek ve formě HTML šablony. Před vytvořením HTML šablony však musíme čekat, až všechna data dorazí ve správném pořadí zpracování. Tento přístup čekání na dokončení všech procesů místo prezentování dostupného výstupu uživateli nebyl považován za příliš logický pro Node.js, který pracuje asynchronně. Proč bychom měli čekat na dokončení všech procesů místo prezentování hotového výstupu uživateli?

Jaký je hlavní motivací za touto technologií?

Hlavním motivem technologií jako je Facebookův BigPipe a další sociální síťové služby (SNS) je zlepšení personalizovaného uživatelského zážitku na základě dat. Toto neustále vedlo k novým pokrokům s cílem zlepšit výkon serverů. Facebook našel řešení v paralelním zpracování mezi servery a klienty. Toto řešení se primárně zaměřuje na snížení latence požadovaných stránek.

Chunked Encoding

Pro pochopení technologie BigPipe musíme rozumět stránkám HTML ve formě „chunked encoding“. Chunked encoding je metoda přenosu založená na HTTP 1.1. Rozděluje odeslaný požadavek do částí, což umožňuje provádět paralelní zpracování na každé části. Tímto způsobem může hotová část být zobrazena na obrazovce, zatímco zpracování ostatních částí pokračuje.

Pagelet

„Pagelety“ odkazují na rozdělení stránek na menší komponenty. Na níže uvedeném obrázku můžeme vidět, jak Facebook rozděluje stránku na menší kousky.

Life Cycle

Obecně, když uživatel odešle požadavek v technologii BigPipe, jsou iniciovány následující kroky.

  • Webový prohlížeč odesílá HTTP požadavek serveru.
  • HTML stránka je rozdělena pro paralelní zpracování následovně.
<html>
<head>…</head>
<body>
<div id=”left_column”>
<div id=”pagelet_navigation”></div>
</div>
<div id=”middle_column”>
<div id=”pagelet_composer”></div>
<div id=”pagelet_stream”></div>
</div>
<div id=”right_column”>
<div id=”pagelet_pymk”></div>
<div id=”pagelet_ads”></div>
<div id=”pagelet_connect”></div>
</div>
  • Server vytvoří Pagelet pro požadovanou stránku. Jakmile je Pagelet vytvořen, tato odpověď je převedena do formátu JSON s přidaným CSS ve strukturované podobě.
big_pipe.onPageletArrive( { id: “pagelet_composer", content: 
, css: [..], js: [..], … })

Paralelní zpracování mezi webovým serverem a prohlížečem

Při paralelním zpracování každý Pagelet operuje v různých fázích. Například během načítání CSS může současně generovat obsah v jiné fázi a vytvářet odpověď pro jiný Pagelet v ještě jiné fázi.

Porovnání výkonu

Graf níže ilustruje výkon stránky z perspektivy uživatele mezi Big Pipe a tradičním modelem. Graf ukazuje, že Big Pipe snižuje latenci o polovinu v několika prohlížečích.

Naše Kanceláře

Drupart Locations

Naše oddělení

London

151 West Green Road, London, England

442038156478

[email protected]

Drupart R&D

GOSB Teknopark Hi-Tech Bina 3.Kat B3 Gebze - KOCAELİ

+90 262 678 8872

[email protected]

Newark

112 Capitol Trail Suite, A437 Newark DE, 19711

+17406666255

[email protected]

Wiesbaden

Hinterbergstraße 27
65207 Wiesbaden
Deutschland

+49 (0) 6151 – 492 70 23

[email protected]