Viimastel aastatel pakuvad ĂŒha rohkem platvorme esiplaaniprojektide optimeerimiseks vĂ”imalusi iseseisvaks hostimiseks vĂ”i kolmandate osapoolte ressursside proksimiseks. Akamai vĂ”imaldab mÀÀrata iseseisvalt loodud URL-idele. Cloudflare'il on tehnoloogia Edge Workers. Fasterzine suudab lehtede URL-e nii, et need viiksid kolmandate osapoolte ressurssidele, mis asuvad peamise veebisaidi domeenis.
Kui on teada, et teie projektis kasutatavad kolmandate osapoolte teenused ei muutu liiga sageli ning et nende klientidele edastamise protsessi saab parandada, siis mĂ”tlete kindlasti selliste teenuste proksimise peale. Sellise lĂ€henemisega saate need ressursid tĂ”enĂ€oliselt âlĂ€hedasemaksâ tuua kasutajatele ning saavutada suuremat kontrolli nende vahemĂ€llu salvestamise ĂŒle kliendi poolel. See vĂ”imaldab ka kaitsta kasutajaid kolmandate osapoolte teenuste âlangemiseâ vĂ”i nende jĂ”udluse halvenemisega seotud ebamugavuste eest.
Hea: jÔudluse tÔus
Iseseisev hostimine kolmandate osapoolte ressursidest parandab jĂ”udlust ĂŒsnagi nĂ€htaval viisil. Hoolimata sellest, et brauser ei pea uuesti pöörduma DNS-i poole, ei pea ta looma TCP-ĂŒhendust ja teostama TLS-kĂ€epigistust kolmanda osapoole domeenil. Seda, kuidas iseseisev hostimine kolmandate osapoolte ressursidest mĂ”jutab jĂ”udlust, saab nĂ€ha, vĂ”rreldes kahte jĂ€rgmist pilti.

Kolmandate osapoolte ressursid laaditakse vÀlisest allikast (vÔetud )

Kolmandate osapoolte ressursid salvestatakse seal, kus ka ĂŒlejÀÀnud veebisaidi materjalid (vĂ”etud )
Olukorda parandab veel see, et brauser kasutab HTTP/2-ĂŒhenduse multiplexerimise ja andmete prioriseerimise vĂ”imalusi, mis on juba loodud peamise domeeniga.
Kui te ei majuta oma serveris kolmandate osapoolte ressursse, ei saa neid prioriseerida, kuna need laaditakse erinevast domeenist. See viib olukorrani, kus nad konkureerivad omavahel kliendi ribalaiuse pÀrast. See vÔib tÀhendada, et lehekoostamisel kriitilise tÀhtsusega materjalide laadimisaeg osutub oluliselt pikemaks, kui see oleks ideaalsetes tingimustes. esitlus HTTP/2 prioriseerimisest, kus kogu see teema on vÀga hÀsti selgitatud.
VĂ”ib eeldada, et vĂ€liste ressursside linkide atribuutide kasutamine preconnect aitab probleemi lahendada. Siiski, kui selliseid linke erinevatele domeenidele on liiga palju, vĂ”ib see tegelikult ĂŒle koormata sideĂŒksuse kĂ”ige kriitilisemal hetkel.
Kui hostida kolmandate osapoolte ressursse iseseisvalt, on vĂ”imalik kontrollida, kuidas need ressursid kliendini edastatakse. TĂ€psemalt öeldes on jutt jĂ€rgmise ĂŒle:
- On vÔimalik tagada andmete tihendamise algoritmi kasutamine, mis sobib kÔige paremini igale brauserile (Brotli/gzip).
- Saab suurendada ressursside vahemÀlu aega, mis isegi kÔige tuntumate pakkujate juures ei ole eriti suur (nÀiteks on GA sildi jaoks vastav vÀÀrtus seatud 30 minutiks).
Saab isegi suurendada ressursi TTL nÀitajat, nÀiteks aastani, kaasates vastavad materjalid oma vahemÀluhalduse strateegiasse (URL-i hashes, versioonimine jne). Nendest rÀÀgime allpool.
âKaitse kolmandate osapoolte teenuste katkestuste vĂ”i nende sulgemise eest
Veel ĂŒks huvitav aspekt kolmandate osapoolte ressurside iseseisvast hostimisest on see, et see vĂ”imaldab vĂ€hendada riske, mis on seotud kolmandate osapoolte teenuste katkestustega. Oletame, et teie kasutatav kolmanda osapoole A/B testimise lahendus on realiseeritud blokeeriva skriptina, mis laaditakse lehe pĂ€isesse. See skript laadib aeglaselt. Kui vastavat skripti ei Ă”nnestu laadida, jÀÀb leht tĂŒhjaks. Kui selle laadimiseks kulub vĂ€ga kaua aega, ilmub leht suure viivitusega. VĂ”i oletame, et projektis kasutatakse raamatukogu, mis laaditakse kolmanda osapoole CDN-ressursilt. Kujutame ette, et see ressurss on kokku kukkunud vĂ”i blokeeritud mĂ”nes riigis. Selline olukord viib saidi töö loogika rikkumiseni.
Kuidas teada saada, kuidas teie sait töötab olukordades, kus mÔni vÀline teenus ei ole saadaval, vÔite kasutada SPOF jaotist .

SPOF jaotis webpagetest.org-is
âKuidas on lood brauserites ressursside vahemĂ€luprobleemidega? (nĂ€punĂ€ide: see on mĂŒĂŒt)
VĂ”ib arvata, et avalike CDN-ide kasutamine toob automaatselt paremat jĂ”udlust, kuna need teenused omavad piisavalt kvaliteetseid vĂ”rke ja on jaotatud ĂŒle kogu maailma. Kuid tegelikult on kĂ”ik natuke keerulisem.
Oletame, et meil on mitu erinevat veebisaiti: website1.com, website2.com, website3.com. KĂ”ik need saidid kasutavad jQuery teeki. Me ĂŒhendame selle CDN-iga, nĂ€iteks â googleapis.com. VĂ”ime eeldada, et brauser laadib teegi kord ja salvestab selle vahemĂ€lusse, seejĂ€rel kasutab seda kĂ”igis kolmes saidis. See vĂ”iks vĂ€hendada vĂ”rgu koormust. VĂ”ib-olla vĂ”ib see sÀÀsta kuskil ja aidata parandada ressursside jĂ”udlust. Praktiliselt aga nĂ€eb kĂ”ik teistsugune vĂ€lja. NĂ€iteks on Safaris rakendatud funktsioon, mida nimetatakse : vahemĂ€lus kasutatakse kahtlustatud vĂ”tmeid, mis pĂ”hinevad dokumendi allikal ja kolmanda osapoole ressursi allikal. hea artikkel selle teema kohta.
Vanad uuringud ja , samuti uuemad Pola Calvano, nĂ€itavad, et ressursid ei pĂŒsi brauseri vahemĂ€lu nii kaua, kui vĂ”iksime oodata: "Omanda ressursside ja kolmandate osapoolte ressursside vahemĂ€lu kestuse vahel on tĂ”sine lĂ”he. RÀÀgime CSS-ist ja veebifontidest. TĂ€psemalt, 95% enda fontide vahemĂ€lu kestus ĂŒletab nĂ€dalat, samas kui 50% kolmandate osapoolte fontide vahemĂ€lu kestus on alla nĂ€dala! See annab veebiarendajatele kaalukaid pĂ”hjuseid fontide failide ise hostimiseks!"
SeetÔttu, kui hostite oma juures teiste materjale, ei pruugi te mÀrkata veepidevuse probleeme, mida pÔhjustab brauseri vahemÀlu.
NĂŒĂŒd, kui oleme uurinud iseseisva hostimise tugevusi, rÀÀkigem sellest, kuidas head rakendust halvast eristada.
halb: devils on detailides
Kolmanda osapoole ressursside edastamine oma domeenile ei saa automaatselt toimuda ilma nende ressursside Ôige vahemÀllu salvestamiseta.
Ăks peamisi probleeme siin on vahemĂ€lu aeg. NĂ€iteks versiooni teave lisatakse kolmandate osapoolte skriptide nimedes umbes nii: jquery-3.4.1.js. Selline fail ei muutu tulevikus, seega ei tekita see mingit probleemi selle vahemĂ€llu salvestamisega.
Kuid kui mingit versioonimise skeemi failide töötlemisel ei rakendata, vÔivad vahemÀllu salvestatud skriptid, mille sisu muutub sama faili nÔnna, aeguda. See vÔib kujuneda tÔsiseks probleemiks, nÀiteks ei lase see automaatselt rakendada turvaparandusi skriptidesse, mis peaksid vÔimalikult kiiresti jÔudma klientideni. Arendajal tuleb pingutada, et sarnased skriptid vahemÀlus uuendada. Lisaks vÔib see pÔhjustada rakenduse talitlushÀireid, kuna kliendi poolt vahemÀlust kasutatav kood erineb vÀrskest koodi versioonist, millele serveri osa on loodud.
TĂ”si, kui rÀÀgime sageli uuendatavatest materjalidest (siltide haldurid, A/B-testimise lahendused), siis nende vahemĂ€llu salvestamine CDN-idega on ĂŒlesanne, kuigi teostatav, on kordades keerulisem. Teenused nagu Commanders Act, silti haldavad lahendused, kasutavad uute versioonide avaldamisel veebikoonuseid. See vĂ”imaldab korraldada vahemĂ€lu tĂŒhjendamist CDN-is vĂ”i, mis veelgi parem, vĂ”imaldab vĂ€lja kutsuda uuenduse hash'i vĂ”i versiooni URL-ile.
âKohandatud materjalide edastamine klientidele
Lisaks, kui rÀÀgime vahemÀllu salvestamisest, tuleb arvesse vÔtta ka seda, et CDN-ides kasutatavad vahemÀllu salvestamise seadistused ei pruugi sobida teatud kolmandate osapoolte ressurssidega. NÀiteks vÔivad sellised ressursid kasutada kasutajaagendi nuhkimistehnoloogiat (user agent sniffing, adaptive serving), et edastada kindlatele brauseritele versioone materjalidest, mis on spetsiaalselt nende brauserite jaoks optimeeritud. Need tehnoloogiad tuginevad brauseri vÔimekuse mÀÀramiseks regulaaravaldustele vÔi andmebaasile, kus on kogutud teave HTTP-pealkirjade kohta. User-Agent. PÀrast seda, kui nad on teada saanud, millega nad tegelevad, edastavad nad sellele materjalid, mis on sellele sobivad.
Siin vÔib tuua meelde kaks teenust. Esimene - googlefonts.com. Teine - polyfill.io. Google Fonts teenus pakub, mÔne ressursi jaoks, erinevat CSS-koodi, mis sÔltub brauseri vÔimekusest (andmata linke woff2-ressursside, kasutades unicode-range).
Siin on tulemused paarist pÀringust Google Fonts-le, mis tehti erinevatest brauseritest.

Google Fonts'i pÀringute tulemus, mis on tehtud Chrome'ist

Google Fonts'i pÀringute tulemus, mis on tehtud IE10-st
Polyfill.io annab brauserile ainult need polĂŒfillid, mis talle vajalikud on. See toimub jĂ”udluse kaalutlustest.
Vaadakem nÀiteks, mis juhtub, kui teeme jÀrgmise pÀringu erinevates brauserites:
IE10-st tehtud pĂ€ringu vastuseks tuleb 34 KB andmeid. Chrome'ist tehtud pĂ€ringule on vastus tĂŒhi.
Halb: mÔningad kaalutlused privaatsuse kohta
See punkt on viimane jÀrjestuses, kuid mitte vÀhem oluline. Jutt on sellest, et kolmandate osapoolte ressursside iseseisev hostimine projekti peamisel domeenil vÔi selle alamdomeenil vÔib panna ohtu kasutajate privaatsuse ja avaldada negatiivset mÔju pÔhiprojekti veebilehele.
Kui teie CDN-sĂŒsteem on valesti seadistatud, vĂ”ib see lĂ”ppeda sellega, et saadate teie domeeni kĂŒpsised kolmandale teenusele. Kui CDN-i tasemel ei korraldata Ă”iget filtreerimist, vĂ”ivad teie sessiooni kĂŒpsised, mida tavaliselt ei saa kasutada JavaScriptis (millel on atribuut httponly), saadetakse kolmandale hostile.
Just see vĂ”ib juhtuda nĂ€iteks Euleriani vĂ”i Criteo jĂ€lgijatega. Kolmandad jĂ€lgijad vĂ”ivad paigaldada ainulaadse identifikaatori kĂŒpsisesse. Need, kui nad olid saidi sisu osaks, said lugeda identifikaatorit oma Ă€ranĂ€gemise jĂ€rgi, kui kasutaja töötas erinevate veebiresurssidega.
TĂ€napĂ€eval sisaldavad enamik brausereid kaitset sellise jĂ€lgijate kĂ€itumise vastu. Tulemuseks on, et nĂŒĂŒd kasutavad jĂ€lgijad tehnoloogiat , maskeerides end erinevate projektide skriptide jĂ€rgi. Nimelt pakuvad jĂ€lgijad veebilehe omanikele CNAME-i lisamist oma seadistustesse mingiks domeeniks, mille aadress nĂ€eb vĂ€lja nagu juhuslik sĂŒmbolite kombinatsioon.
Kuigi ei ole soovitatav teha nii, et veebilehe kĂŒpsised oleksid kĂ”igile alamdomeenidele kergesti ligipÀÀsetavad (nĂ€iteks â *.website.com), tehakse seda paljudele veebilehtedele. Sel juhul saadetakse sellised kĂŒpsised automaatselt maskeeritud kolmandale jĂ€lgijale. Tulemuseks on, et mingist privaatsusest ei saa enam rÀÀkida.
Lisaks toimub sama ka HTTP-pealkirjadega , mis saadetakse ainult pÔhikodule, kuna neid saab kasutada loomiseks kasutaja. Pange tÀhele, et teie kasutatav CDN-teenus filtreerib selliseid pealkirju Ôigesti.
Summary
Kui plaanite varsti juurutada kolmandate osapoolte allikate iseseisvat hostimist, lubage mul anda teile mÔned nÔuanded:
- Hoidke oma tÀhtsaimad JS-raamatukogud, fondid ja CSS-failid oma serveris. See vÀhendab riski, et teie veebisaidi töö katkeb vÔi selle jÔudlus halveneb, kui vajalik ressurss, mis on veebisaidi toimimiseks hÀdavajalik, ei ole saadaval kolmanda osapoole teenuse tÔttu.
- Enne kolmandate osapoolte ressursside vahemĂ€llu salvestamist CDN-is veenduge, et nende failide nimetamist kasutatakse mingisugust versiooni haldust vĂ”i et saate nende ressursside elutsĂŒkli hallata, kĂ€sitsi vĂ”i automaatselt tĂŒhjendades CDN-i vahemĂ€lu, kui avaldate uue versiooni skriptist.
- Olge vĂ€ga ettevaatlik CDN-i, puhverserveri ja vahemĂ€lu seadistuste osas. See takistab teil saatmast oma projekti kĂŒpsiseid vĂ”i pealkirju
Client-Hintskolmandate osapoolte teenustele.
Lugupeetud lugejad! Kas majutate oma serverites vÔÔraid materjale, mis on teie projektide toimimiseks ÀÀrmiselt olulised?
Allikas: habr.com
