18. dia HTTP/2 Flashcards
(Bevált gyakorlat a késleltetési idő csökkentésére) beágyazás
Képek közvetlen beágyazása CSS stíluslapokba.
{
background: url(data:image/png; base64,)
no-repeat;
}
(Bevált gyakorlat a késleltetési idő csökkentésére) Spriting
Több kép kombinálása egyetlen képállományban.
(Bevált gyakorlat a késleltetési idő csökkentésére) Sharding
A tartalom elosztása több szerveren.
- Érdemes lehet például képeket egy olyan külön webszerverről szolgáltatni, amely nem használ sütiket.
- Kapcsolódó fogalom: tartalomszállító hálózat, CDN
(Bevált gyakorlat a késleltetési idő csökkentésére) Összefűzés
Több CSS stíluslap és JavaScript állomány összefűzése
(Bevált gyakorlat a késleltetési idő csökkentésére) Kicsinyítés
Felesleges karakterek eltávolítása CSS stíluslapokból és JavaScript állományokból anélkül, hogy az erőforrás a bongésző általi feldolgozása módosuljon. Például a whitespace karakterek és megjegyzések eltávolítása.
Mi a HTTP/2?
A HTTP szemantikájának egy optimalizált kifejezésmódja.
- Cél a hálózati erőforrások hatékonyabb használata és a végfelhasználó által megfigyelhető késleltetési idő csökkentése.
- Az egyik fő cél, hogy a klienseknek csak egy kapcsolatot kelljen fenntartaniuk egy szerverrel.
Ugyan azokat a metódusokat, állapotkódokat, fejléceket és URI sémákat használják, mint a HTTP/1.1
- Csak az üzenet formálása és átvitele történik eltérő módon.
(HTTP/2 újdonságai) Multiplexelés
Megvlósítás adatfolyamok használatával.
- Ezek túlnyomórészt egymástól függetlenek, így egy blokkolt vagy beragadt adatfolyam nem akadályozza az előrehaladást más adatfolyamoknak.
Kliens Szerver
Stream 7 -> Stream 9 -> Stream 7 -> Stream 7 -> Stream 5
Data ——-> Headers -> Data ——-> Headers -> Headers
< ————Stream 3 <———Stream 3 <———— Stream 3 <——
<————–Headers <———- Data <——————-Data <———
(HTTP/2 újdonságai) Forgalomvezérlés és rangsorolás
A multiplexelt adatfolyamok hatékony használatát biztosító mechanizmusok.
- A forgalomvezérlés biztosítja, hogy a fogadónak annyi adat kerül továbbításra, amennyit az kezelni tud.
- A rangsorolás biztosítja, hogy a kortlátozottan rendelkezésre álló erőforrások először a legfontosabb adatfolyamokhoz rendelhetők hozzá.
(HTTP/2 újdonságai) Szerver push
Lehetővé teszi a szervernek, hogy spekulatív módon küldjön olyan adatokat egy kliensnek, amelyekre annak előreláthatólag szüksége lesz.
(HTTP/2 újdonságai) Bináris protokoll
Az üzenetek hatékonyabb feldolgozását teszi lehetővé az üzenetek bináris formálása.
(HTTP/2 újdonságai) Fejlécmezők tömörítése
Fejlécmezők tömörítése
Keretek felépítése grafikon és leírás
Hossz 24bit
Típus 8bit | Jelzők 8bit
R | Adatfolyam azonosító 31bit
Adatrész
Hossz - Az adatrész hosszát szolgálja 24-bites előjel nélküli egész
Típus - A keret 8 biten ábrázolt típusa, amely meghatározza a keret felépítését és szemantikáját.
Jelzők - 8 biten ábrázolt logikai jelzők, amelyek jelentése a keret típusától függ
R - Fentartott célú 0 értékű bit, amelynek nincs definiált jelentése
Adatfolyam azonosító - Egy adatfolyamot azonosító 31-bites előjel nélküli egész.
Adatrész - Felépítése és típusa a keret típusától függ.
Keretek fajtái
0x0 DATA - Üzenet payload átvitele
0x1 HEADERS - Adatfolyam megnyitása és egy fejléc blokk töredék továbbítása
0x2 PRIORITY - Adatfolyam priotitásának előírása
0x3 RST_SYSTEM - Adatfolyam azonnali megszüntetése
0x4 SETTINGS - Konfigurációs paraméterektovábbítása, vétel nyugtázása
0x5 PUSH_PROMISE - Előzetes értesítés a küldő által létrehozni kívánt adatfolyamról
0x6 PING - Minimális körbefordulási idő
0x7 GOAWAY - Kapcsolat lezárásának kedvezményezése
0x8 WINDW_UPDATE - Forgalomvezérlés megvalósítása
0x9 CONTINUATION - Fejléc blokk töredékek sorozatának folytatása.
Adatfolyamok jellemzői
Egyetlen HTTP/2 kapcsolat több egyidejű adatfolyamból áll.
Egyoldalúan lehet létrehoznia a kliensnek vagy szervernek (a másik megkérdezése nélkül) ezt persze mind a ketten használhatják.
Mind a két végpont lezárhatja.
A fogadó a keretek feldolgozását abban a sorrendben csinálja ahogy azokat kapja.
Egy előjel nélküli egész szám azonosítja az egyes adatfolyamokat.
Adatfolyamok azonosítása
32-bites előjel nélküli egész szám, amelyet a létrehozója rendel hozzá.
- Kliens páratlan számot, míg a szerver párosat rendel hozzá.
Új adatfolyam létrehozásakor annak azonosítója nagyobb kell, hogy legyen a kedvezményező fél összes létrehozott vagy fenntartott azonosítójánál.
Nem újrafelhasználhatóak.
Hosszan tartó kapcsolatok esetében elfogyhat a lehetséges azonosító, ekkor új kapcsolatot kell létrehozni.