[Ekki] nota CDN

Næstum sérhver grein eða tól til að fínstilla hraða vefsvæðisins er með hóflega ákvæði „notaðu CDN. Almennt séð er CDN efnisafhendingarnet eða efnisafhendingarnet. Við hjá Method Lab rekumst oft á spurningar frá viðskiptavinum um þetta efni; sumir þeirra virkja sitt eigið CDN. Tilgangur þessarar greinar er að skilja hvað CDN getur veitt hvað varðar hleðsluhraða vefsvæðis, hvaða vandamál geta komið upp og í hvaða tilvikum notkun CDN er réttlætanleg.

[Ekki] nota CDN

Tafir sem hringt er í hring á myndinni eru af völdum notkunar á CDN.

Smá saga

Eins og mörg tækni, komu CDN fram af neyð. Með þróun netrása meðal netnotenda birtist myndbandsþjónusta á netinu. Auðvitað, myndbandsefni krefst stærðargráðu meiri bandbreiddar samanborið við venjulegt vefsíðuefni (myndir, texti og CSS eða JS kóða).

Þegar reynt er að útvarpa myndbandsstraumi samhliða mörgum viðskiptavinum frá einum netþjóni mun netrás netþjónsins líklega verða flöskuhálsinn. Að jafnaði duga nokkur þúsund þræðir til að stífla dæmigerða netþjónarás. Auðvitað geta verið aðrar takmarkanir á auðlindum, en þær eru ekki mikilvægar núna. Það er líka mikilvægt að það sé of dýrt (og stundum ómögulegt) að stækka netþjónarásina og einnig óframkvæmanlegt. Álagið á rásina í útsendingum verður hringlaga.

Vandamálið við að takmarka rás einstaks netþjóns er fullkomlega leyst af CDN. Viðskiptavinir tengjast ekki þjóninum beint, heldur hnútum í CDN netinu. Í kjöraðstæðum sendir þjónninn einn straum til CDN hnútsins og síðan notar netið sitt eigið fjármagn til að koma þessum straumi til margra notenda. Frá efnahagslegu sjónarmiði borgum við aðeins fyrir þær auðlindir sem raunverulega er neytt (þetta gæti verið bandbreidd eða umferð) og fáum framúrskarandi sveigjanleika þjónustu okkar. Að nota CDN til að skila þungu efni er fullkomlega réttlætanlegt og rökrétt. Þó að það sé athyglisvert að stærstu leikmennirnir í þessu rými (t.d. Netflix) eru að byggja upp sín eigin CDN í stað þess að nota stór viðskiptaleg CDN (Akamai, Cloudflare, Fastly, osfrv.)

Eftir því sem vefurinn hefur þróast hafa vefforritin sjálf orðið flóknari og flóknari. Vandamálið varðandi hleðsluhraða kom fram á sjónarsviðið. Áhugamenn um hraða vefsíðna greindu fljótt nokkur stór vandamál sem olli því að vefsíður hlaðast hægt. Ein þeirra var nettafir (RTT - tími fram og til baka eða ping-tími). Tafir hafa áhrif á marga ferla í hleðslu vefsíðna: að koma á TCP tengingu, hefja TLS lotu, hlaða hverja einstaka auðlind (mynd, JS skrá, HTML skjal osfrv.)

Vandamálið var aukið af þeirri staðreynd að þegar HTTP/1.1 samskiptareglur voru notaðar (fyrir tilkomu SPDY, QUIC og HTTP/2 var þetta eini kosturinn), opna vafrar ekki meira en 6 TCP tengingar við einn gestgjafa. Allt þetta leiddi til stöðvunar á tengingum og óhagkvæmrar notkunar á bandbreidd rásar. Vandamálið var að hluta til leyst með sundrun léna - stofnun viðbótarhýsinga til að sigrast á takmörkunum á fjölda tenginga.

Þetta er þar sem önnur hæfileiki CDN birtist - að draga úr leynd (RTT) vegna mikils fjölda punkta og nálægðar hnúta við notandann. Fjarlægð gegnir þar afgerandi hlutverki: ljóshraði er takmarkaður (um 200 km/sek í ljósleiðara). Þetta þýðir að hver 000 km ferð bætir við 1000 ms seinkun eða 5 ms við RTT. Þetta er lágmarkstími sem þarf til sendingar, þar sem einnig eru tafir á millibúnaði. Þar sem CDN veit venjulega hvernig á að vista hluti á netþjónum sínum, getum við notið góðs af því að hlaða slíkum hlutum í gegnum CDN. Nauðsynleg skilyrði fyrir þessu: tilvist hlutarins í skyndiminni, nálægð CDN benda á notandann í samanburði við vefforritaþjóninn (upprunaþjónn). Það er mikilvægt að skilja að landfræðileg nálægð CDN hnút tryggir ekki litla leynd. Hægt er að byggja upp leið milli viðskiptavinarins og CDN á þann hátt að viðskiptavinurinn tengist gestgjafa í öðru landi, og hugsanlega í annarri heimsálfu. Þetta er þar sem tengsl fjarskiptafyrirtækja og CDN þjónustunnar (peering, tengingar, þátttaka í IX o.s.frv.) og umferðarleiðarstefnu CDN sjálfs koma til sögunnar. Til dæmis, Cloudflare, þegar notaðar eru tvær upphaflegar áætlanir (ókeypis og ódýr), ábyrgist ekki afhendingu efnis frá næsta gestgjafa - gestgjafinn verður valinn til að ná lágmarkskostnaði.

Mörg leiðandi internetfyrirtæki vekja áhuga almennings (vefframleiðendur og þjónustueigendur) að efninu hleðsluhraða og afköstum vefsíðna. Meðal þessara fyrirtækja eru Yahoo (Yslow tól), AOL (WebPageTest) og Google (Page Speed ​​​​Insights þjónusta), sem eru að þróa sínar eigin ráðleggingar til að flýta fyrir síðum (aðallega tengjast þær hagræðingu viðskiptavina). Síðar birtast ný vefhraðaprófunartæki sem veita einnig ábendingar um að auka vefhraða. Hver af þessum þjónustum eða viðbótum hefur samræmda tilmæli: „Notaðu CDN. Minnkun á netleynd er venjulega nefnd sem skýring á áhrifum CDN. Því miður eru ekki allir tilbúnir til að skilja nákvæmlega hvernig hröðunaráhrifum CDN er náð og hvernig hægt er að mæla þau, svo tilmælin eru tekin á trú og notuð sem staðsetning. Reyndar eru ekki öll CDN búin til jafn.

Notar CDN í dag

Til að meta gagnsemi þess að nota CDN þarf að flokka þau. Hvað er hægt að finna núna í reynd (dæmin innan sviga eru auðvitað ekki tæmandi):

  1. Ókeypis CDN til að dreifa JS bókasöfnum (MaxCDN, Google. Yandex).
  2. CDN þjónustu fyrir hagræðingu viðskiptavina (til dæmis Google leturgerðir fyrir leturgerðir, Cloudinary, Cloudimage fyrir myndir).
  3. CDN fyrir truflanir og hagræðingu auðlinda í CMS (fáanlegt í Bitrix, WordPress og fleirum).
  4. CDN fyrir almennan tilgang (StackPath, CDNVideo, NGENIX, Megafon).
  5. CDN fyrir vefsíðuhröðun (Cloudflare, Imperva, Airi).

Lykilmunurinn á þessum gerðum er hversu mikið af umferðinni fer í gegnum CDN. Tegundir 1-3 eru aðeins afhending hluta efnisins: frá einni beiðni upp í nokkra tugi (venjulega myndir). Tegundir 4 og 5 eru full umboð fyrir umferð í gegnum CDN.

Í reynd þýðir þetta fjölda tenginga sem eru notaðir til að hlaða síðuna. Með HTTP/2 notum við eina TCP tengingu við gestgjafann til að vinna úr hvaða fjölda beiðna sem er. Ef við skiptum auðlindum í aðalhýsil (uppruna) og CDN, þá er nauðsynlegt að dreifa beiðnum yfir nokkur lén og búa til nokkrar TCP tengingar. Versta tilvikið er: DNS (1 RTT) + TCP (1 RTT) + TLS (2-3 RTT) = 6-7 RTT. Þessi formúla tekur ekki með í reikninginn tafir á farsímakerfum fyrir virkjun á útvarpsrás tækisins (ef hún var ekki virk) og tafir á farsímaturninum.

Svona lítur það út á hleðslufossi síðunnar (töf fyrir tengingu við CDN eru auðkennd við RTT 150 ms):

[Ekki] nota CDN

Ef CDN nær yfir alla umferð á síðuna (að undanskildum þjónustu þriðja aðila), þá getum við notað eina TCP tengingu, sem sparar tafir á tengingu við fleiri gestgjafa. Auðvitað á þetta við um HTTP/2 tengingar.

Frekari munur ræðst af virkni tiltekins CDN - fyrir fyrstu gerð er það bara að hýsa kyrrstæða skrá, í þeirri fimmtu er það að breyta nokkrum gerðum af innihaldi vefsvæðis í þeim tilgangi að hagræða.

CDN getu fyrir vefsíðuhröðun

Við skulum lýsa öllu úrvali CDN getu til að flýta síðum, án tillits til virkni einstakra tegunda CDN, og sjáum síðan hvað er útfært í hverri þeirra.

1. Þjöppun á textaauðlindum

Grundvallasti og skiljanlegasti eiginleikinn en samt oft illa útfærður. Öll CDN lýsa yfir nærveru þjöppunar sem hröðunareiginleika þeirra. En ef þú skoðar nánar, koma annmarkar í ljós:

  • Hægt er að nota lágar gráður fyrir kraftmikla þjöppun - 5-6 (til dæmis, fyrir gzip er hámarkið 9);
  • kyrrstöðuþjöppun (skrár í skyndiminni) notar ekki viðbótareiginleika (td zopfi eða brotli með gráðu 11)
  • það er enginn stuðningur fyrir skilvirka brotli þjöppun (sparnaður um 20% miðað við gzip).

Ef þú notar CDN, þá er það þess virði að athuga þessi fáu atriði: taktu skrána sem kom frá CDN, skráðu þjappaða stærð hennar og þjappaðu henni handvirkt til samanburðar (þú getur notað einhverja netþjónustu með brotli stuðningi, til dæmis vsszhat.rf).

2. Stilla skyndiminni hausa viðskiptavinar

Einnig einfaldur hraðaaðgerð: bættu við hausum fyrir skyndiminni efnis hjá viðskiptavininum (vafranum). Nýjasti hausinn er skyndiminnisstýring, sá úrelti rennur út. Að auki er hægt að nota Etag. Aðalatriðið er að hámarksaldur skyndiminnisstýringar sé nógu stór (frá mánuði eða meira).Ef þú ert tilbúinn til að vista tilföngin eins erfitt og mögulegt er geturðu bætt við óbreytanlegum valkostinum.

CDN geta lækkað hámarksaldursgildið, sem neyðir notandann til að endurhlaða kyrrstæðu efni oftar. Það er ekki ljóst hverju þetta tengist: löngun til að auka umferð á netinu eða auka samhæfni við síður sem vita ekki hvernig á að endurstilla skyndiminni. Til dæmis er sjálfgefinn Cloudflare haus skyndiminni tími 1 klukkustund, sem er mjög lágt fyrir óbreytanleg kyrrstæð gögn.

3. Myndahagræðing

Þar sem CDN tekur að sér aðgerðir sem fela í skyndiminni og þjóna myndum, væri rökrétt að fínstilla þær á CDN hliðinni og þjóna þeim notendum á þessu formi. Við skulum panta strax að þessi eiginleiki er aðeins í boði fyrir CDN gerðir 2, 3 og 5.

Þú getur fínstillt myndir á ýmsa vegu: með því að nota háþróuð þjöppunarsnið (eins og WebP), skilvirkari umrita kóðara (MozJPEG) eða einfaldlega hreinsa upp óþarfa lýsigögn.

Almennt séð eru tvær tegundir af slíkum hagræðingum: með gæðatapi og án gæðataps. CDN leitast venjulega við að nota taplausa hagræðingu til að forðast hugsanlegar kvartanir viðskiptavina um breytingar á myndgæðum. Við slíkar aðstæður verður hagnaðurinn í lágmarki. Í raun og veru er JPEG gæðastigið oft miklu hærra en nauðsynlegt er og þú getur örugglega þjappað aftur með lægra gæðastigi án þess að skerða upplifun notenda. Á hinn bóginn er erfitt að ákvarða gæðastig og stillingar almennt fyrir öll möguleg vefforrit, svo CDN notar íhaldssamari stillingar samanborið við þær sem hægt er að beita með hliðsjón af samhenginu (tilgangur mynda, tegund vefforrits) o.s.frv.)

4. Hagræðing TLS tengingarinnar

Mest umferð í dag fer um TLS tengingar, sem þýðir að við eyðum auka tíma í TLS samningaviðræður. Nýlega hefur verið þróuð ný tækni til að flýta fyrir þessu ferli. Til dæmis er þetta EC dulmál, TLS 1.3, skyndiminni og miðar fyrir setu, dulkóðunarhröðun vélbúnaðar (AES-NI) osfrv. Rétt stilling á TLS getur dregið úr tengingartíma í 0-1 RTT (án DNS og TCP).

Með nútíma hugbúnaði er ekki erfitt að innleiða slíkar aðferðir á eigin spýtur.

Ekki öll CDN innleiða TLS bestu starfsvenjur; þú getur athugað þetta með því að mæla TLS tengingartímann (til dæmis í Webpagetest). Tilvalið fyrir nýja tengingu - 1RTT, 2RTT - meðalstig, 3RTT og fleira - slæmt.

Það skal líka tekið fram að jafnvel þegar TLS er notað á CDN stigi verður netþjónninn með vefforritinu okkar einnig að vinna úr TLS, en frá CDN hliðinni, vegna þess að umferðin milli netþjónsins og CDN fer á almenna netið. Í versta falli fáum við tvöfaldar TLS tengingar tafir (fyrsta til CDN gestgjafans, annað á milli hans og netþjónsins okkar).

Fyrir sum forrit er þess virði að borga eftirtekt til öryggisvandamála: umferð er venjulega afkóðuð á CDN hnútum, og þetta er hugsanlegt tækifæri til að stöðva umferð. Möguleikinn á að vinna án umferðarupplýsinga er venjulega í boði í efstu gjaldskráráætlunum gegn aukagjaldi.

5. Dragðu úr töfum á tengingum

Helsti ávinningur CDN sem allir tala um: lítil leynd (minni fjarlægð) milli CDN gestgjafans og notandans. Náist með því að búa til landfræðilega dreifðan netarkitektúr, þar sem gestgjafar eru staðsettir á samþjöppunarstöðum notenda (borgir, umferðarskiptapunktar osfrv.)

Í reynd getur forgangsröðun fyrir mismunandi net verið á sérstökum svæðum. Til dæmis munu rússnesk CDN hafa fleiri staði í Rússlandi. Þeir bandarísku munu fyrst og fremst þróa netið í Bandaríkjunum. Til dæmis, einn af stærstu CDN Cloudflare hefur aðeins 2 stig í Rússlandi - Moskvu og St. Pétursborg. Það er, við getum sparað að hámarki um 10 ms af leynd miðað við beina staðsetningu í Moskvu.

Flest vestræn CDN eru alls ekki með stig í Rússlandi. Með því að tengjast þeim geturðu aðeins aukið tafir fyrir rússneska áhorfendur þína.

6. Hagræðing efnis (minnkun, skipulagsbreytingar)

Flóknasti og tæknilega háþróaður punkturinn. Það getur verið mjög áhættusamt að breyta efni við afhendingu. Jafnvel þótt við tökum minification: að minnka frumkóðann (vegna auka bils, óverulegra mannvirkja osfrv.) getur haft áhrif á frammistöðu hans. Ef við tölum um alvarlegri breytingar - að færa JS kóðann til enda HTMLsins, sameina skrár o.s.frv. - er hættan á að trufla virkni síðunnar enn meiri.

Þess vegna gera aðeins sum CDN af tegund 5 þetta. Auðvitað verður ekki hægt að gera allar þær breytingar sem þarf til að flýta fyrir sjálfvirkan hátt - handvirk greining og hagræðing eru nauðsynleg. Til dæmis er handvirkt verkefni að fjarlægja ónotaðan eða tvítekinn kóða.

Að jafnaði er öllum slíkum hagræðingum stjórnað af stillingum og þær hættulegustu eru sjálfgefnar óvirkar.

Stuðningur við hröðunargetu eftir CDN gerð

Svo skulum skoða hvaða hugsanlega hröðunartækifæri mismunandi tegundir CDN bjóða upp á.

Til hægðarauka endurtökum við flokkunina.

  1. Ókeypis CDN til að dreifa JS bókasöfnum (MaxCDN, Google. Yandex).
  2. CDN þjónustu fyrir hagræðingu viðskiptavina (til dæmis Google leturgerðir fyrir leturgerðir, Cloudinary, Cloudimage fyrir myndir).
  3. CDN fyrir truflanir og hagræðingu auðlinda í CMS (fáanlegt í Bitrix, WordPress og fleirum).
  4. CDN fyrir almennan tilgang (StackPath, CDNVideo, NGENIX, Megafon).
  5. CDN fyrir vefsíðuhröðun (Cloudflare, Imperva, Airi).

Nú skulum við bera saman eiginleika og tegundir CDN.

Tækifæri
Gerð 1
Gerð 2
Gerð 3
Gerð 4
Gerð 5

Textaþjöppun
+–
-
+–
+–
+

Skyndiminnihausar
+
+
+
+
+

Myndir
-
+–
+–
-
+

TLS
-
-
-
+–
+

Tafir
-
-
-
+
+

Efni
-
-
-
-
+

Í þessari töflu er „+“ notað til að gefa til kynna fullan stuðning, „–“ er enginn stuðningur og „+–“ er stuðningur að hluta. Auðvitað geta verið frávik frá þessari töflu í raunveruleikanum (til dæmis mun sum almennt CDN innleiða eiginleika til að fínstilla myndir), en fyrir almenna hugmynd er það gagnlegt.

Niðurstöður

Vonandi, eftir að hafa lesið þessa grein, muntu hafa skýrari mynd varðandi „notaðu CDN“ tilmælin til að flýta fyrir vefsvæðum þínum.

Eins og í öllum viðskiptum geturðu ekki trúað markaðsloforðum neinnar þjónustu. Áhrifin þarf að mæla og prófa við raunverulegar aðstæður. Ef þú ert nú þegar að nota CDN skaltu athuga hvort það sé skilvirkt með því að nota viðmiðin sem lýst er í greininni.

Það er mögulegt að notkun á CDN núna sé að hægja á hleðslutíma síðunnar þinnar.

Sem almenn ráðlegging getum við einbeitt okkur að eftirfarandi: rannsaka áhorfendur þína, ákvarða landfræðilegt umfang þeirra. Ef aðaláhorfendur þínir eru einbeittir innan 1-2 þúsund kílómetra radíus, þarftu ekki CDN í aðaltilgangi þess - að draga úr leynd. Þess í stað geturðu sett netþjóninn þinn nær notendum þínum og stillt hann á réttan hátt og fengið flestar þær fínstillingar sem lýst er í greininni (ókeypis og varanleg).

Ef áhorfendur þínir eru sannarlega landfræðilega dreifðir (radíus meira en 3000 kílómetrar), mun það virkilega vera gagnlegt að nota gæða CDN. Hins vegar þarftu að skilja fyrirfram hvað nákvæmlega CDN getur flýtt fyrir (sjá töflu yfir getu og lýsingu þeirra). Hins vegar er vefhröðun enn flókið verkefni sem ekki er hægt að leysa með því að tengja CDN. Til viðbótar við ofangreindar fínstillingar eru áhrifaríkustu hröðunaraðferðirnar eftir CDN: hagræðingu á miðlarahlutanum, háþróaðar breytingar á biðlarahlutanum (fjarlægja ónotaðan kóða, fínstilla flutningsferlið, vinna með innihald, leturgerðir, aðlögunarhæfni osfrv. )

Heimild: www.habr.com

Bæta við athugasemd