Samostojni viri tretjih oseb: dobro, slabo, grdo

V zadnjih letih vse več platform za optimizacijo front-end projektov ponuja priložnosti za samostojno gostovanje ali posredovanje virov tretjih oseb. Akamai vam omogoča nastavitev specifični parametri za samogenerirane URL-je. Cloudflare ima tehnologijo Edge Workers. Fasterzine lahko prepisati URL-ji na straneh, tako da kažejo na vire tretjih oseb, ki se nahajajo na glavni domeni spletnega mesta.

Samostojni viri tretjih oseb: dobro, slabo, grdo

Če veste, da se storitve tretjih oseb, ki se uporabljajo v vašem projektu, ne spreminjajo pogosto in da bi lahko izboljšali proces njihovega zagotavljanja strankam, potem verjetno razmišljate o posredništvu takih storitev. S tem pristopom lahko te vire zelo dobro približate svojim uporabnikom in pridobite popolnejši nadzor nad njihovim predpomnjenjem na strani odjemalca. To poleg tega omogoča zaščito uporabnikov pred težavami, ki jih povzroči "zrušitev" storitve tretje osebe ali poslabšanje njene učinkovitosti.

Dobro: izboljšano delovanje

Samostojno gostovanje virov nekoga drugega izboljša učinkovitost na zelo očiten način. Brskalniku ni treba znova dostopati do DNS, ni mu treba vzpostaviti povezave TCP in izvesti TLS rokovanja na domeni tretje osebe. Če primerjate naslednji dve številki, lahko vidite, kako samostojno gostovanje virov nekoga drugega vpliva na zmogljivost.

Samostojni viri tretjih oseb: dobro, slabo, grdo
Viri tretjih oseb so preneseni iz zunanjih virov (vzeti iz zato)

Samostojni viri tretjih oseb: dobro, slabo, grdo
Viri tretjih oseb so shranjeni na istem mestu kot ostalo gradivo spletnega mesta (vzeto iz zato)

Stanje izboljša tudi dejstvo, da bo brskalnik uporabil možnost multipleksiranja in prioritizacije podatkov iz povezave HTTP/2, ki je že vzpostavljena z glavno domeno.

Če ne gostite virov tretjih oseb, jim ni mogoče dati prednosti, ker bodo naloženi z domene, ki ni glavna. Zaradi tega bosta tekmovala med seboj za odjemalčevo pasovno širino. Posledica tega je lahko čas nalaganja vsebine, ki je ključnega pomena za izdelavo strani, veliko daljši od tistega, kar bi bilo mogoče doseči v idealnih okoliščinah. Tu pogovor o določanju prednosti HTTP/2, ki vse to zelo dobro razloži.

Lahko se domneva, da je uporaba atributov v povezavah do zunanjih virov preconnect bo pomagal pri rešitvi problema. Če pa je teh povezav na različne domene preveč, lahko to dejansko preobremeni komunikacijsko linijo v najbolj ključnem trenutku.

Če sami gostite vire tretjih oseb, lahko nadzirate, kako natančno so ti viri dani odjemalcu. Govorimo namreč o naslednjem:

  • Zagotovite lahko, da se uporablja algoritem stiskanja podatkov, ki najbolj ustreza posameznemu brskalniku (Brotli/gzip).
  • Čas predpomnjenja lahko povečate za vire, ki običajno niso posebej dolgi, tudi pri najbolj znanih ponudnikih (npr. ustrezna vrednost za oznako GA je nastavljena na 30 minut).

TTL za vir lahko celo podaljšate na, recimo, eno leto, tako da v strategijo upravljanja predpomnjenja vključite ustrezno vsebino (razpršitve URL-jev, različice itd.). O tem bomo govorili spodaj.

▍Zaščita pred motnjami v delovanju storitev tretjih oseb ali njihovo zaustavitvijo

Drug zanimiv vidik samostojnega gostovanja virov tretjih oseb je, da vam omogoča ublažitev tveganj, povezanih z izpadi storitev tretjih oseb. Predpostavimo, da je rešitev za testiranje A/B drugega proizvajalca, ki jo uporabljate, implementirana kot blokirni skript, ki se naloži v razdelku glave strani. Ta skript se nalaga počasi. Če se ustrezni skript ne naloži, bo stran prazna. Če nalaganje traja zelo dolgo, se stran prikaže z veliko zamudo. Ali pa predpostavimo, da projekt uporablja knjižnico, preneseno iz vira CDN tretje osebe. Predstavljajmo si, da je ta vir doživel napako ali je bil blokiran v določeni državi. Takšna situacija bo povzročila kršitev logike spletnega mesta.

Če želite izvedeti, kako vaše spletno mesto deluje, ko neka zunanja storitev ni na voljo, lahko uporabite razdelek SPOF na webpagetest.org.

Samostojni viri tretjih oseb: dobro, slabo, grdo
razdelek SPOF na webpagetest.org

▍Kaj pa težave s predpomnjenjem materialov v brskalnikih? (namig: to je mit)

Morda mislite, da bi uporaba javnih CDN-jev samodejno vodila do boljše učinkovitosti virov, saj imajo te storitve dokaj kakovostna omrežja in so razporejene po vsem svetu. Toda v resnici je vse malo bolj zapleteno.

Recimo, da imamo več različnih spletnih mest: website1.com, website2.com, website3.com. Vsa ta spletna mesta uporabljajo knjižnico jQuery. Z njimi ga povežemo s CDN, na primer - googleapis.com. Pričakujete lahko, da bo brskalnik enkrat prenesel in predpomnil knjižnico ter jo nato uporabil na vseh treh spletnih mestih. To bi lahko zmanjšalo obremenitev omrežja. Morda vam bo to omogočilo, da nekje prihranite denar in pomagate izboljšati učinkovitost virov. S praktičnega vidika je vse videti drugače. Na primer, Safari ima funkcijo, imenovano Inteligentno preprečevanje sledenja: Predpomnilnik uporablja dvojne ključe na podlagi vira dokumenta in vira vira tretje osebe. Tu dober članek na to temo.

stare študije Yahoo и Facebook , pa tudi novejše študija Paul Calvano, kažejo, da viri niso shranjeni v predpomnilnikih brskalnika tako dolgo, kot bi lahko pričakovali: »Obstaja resna vrzel med časom predpomnjenja lastnih virov projekta in virov tretjih oseb. Govorimo o CSS in spletnih pisavah. Namreč, 95% domačih pisav ima življenjsko dobo predpomnilnika več kot teden dni, medtem ko ima 50% pisav tretjih oseb življenjsko dobo predpomnilnika manj kot teden dni! To daje spletnim razvijalcem prepričljiv razlog, da sami gostijo datoteke s pisavami!«

Posledično, če gostite vsebino drugih ljudi, ne boste opazili nobenih težav pri delovanju, ki jih povzroča predpomnjenje brskalnika.

Zdaj, ko smo obravnavali prednosti samostojnega gostovanja tretjih oseb, se pogovorimo o tem, kako ločiti dobro implementacijo tega pristopa od slabe.

Slabo: Hudič je v podrobnostih

Premika virov tretjih oseb v vašo lastno domeno ni mogoče izvesti samodejno, ne da bi zagotovili, da so ti viri pravilno predpomnjeni.

Ena glavnih težav tukaj je predpomnjenje časa. Informacije o različici so na primer vključene v imena skriptov tretjih oseb, kot je ta: jquery-3.4.1.js. Takšna datoteka se v prihodnje ne bo spreminjala in posledično ne bo povzročala težav z njenim predpomnjenjem.

Če pa se pri delu z datotekami ne uporablja neka shema za urejanje različic, lahko predpomnjeni skripti, katerih vsebina se spremeni, medtem ko ime datoteke ostane nespremenjeno, postanejo zastareli. To je lahko resna težava, saj na primer ne omogoča dodajanja samodejnih varnostnih popravkov skriptom, ki jih morajo odjemalci prejeti čim prej. Razvijalec se bo moral potruditi, da posodobi takšne skripte v predpomnilniku. Poleg tega lahko to povzroči okvare aplikacije zaradi dejstva, da se koda, uporabljena na odjemalcu iz predpomnilnika, razlikuje od najnovejše različice kode, za katero je zasnovan strežniški del projekta.

Res je, če govorimo o materialih, ki se pogosto posodabljajo (upravitelji oznak, rešitve za A/B testiranje), potem je njihovo predpomnjenje z orodji CDN rešljiva naloga, vendar je veliko bolj zapletena. Storitve, kot je Commanders Act, rešitev za upravljanje oznak, pri objavljanju novih različic uporabljajo spletne kljuke. To vam daje možnost, da vsilite izpiranje predpomnilnika na CDN ali, še bolje, možnost, da vsilite zgoščevanje ali posodobitev URL-ja.

▍Prilagodljiva dostava materialov naročnikom

Poleg tega moramo, ko govorimo o predpomnjenju, upoštevati dejstvo, da nastavitve predpomnjenja, ki se uporabljajo v CDN, morda niso primerne za nekatere vire tretjih oseb. Takšni viri lahko na primer uporabljajo tehnologijo vohanja uporabniškega agenta (prilagodljivo streženje), da določenim brskalnikom strežejo različice vsebine, optimizirane posebej za te brskalnike. Te tehnologije se opirajo na regularne izraze ali zbirko podatkov o glavi HTTP, da ugotovijo zmogljivosti brskalnika. User-Agent. Ko vedo, s katerim brskalnikom imajo opravka, mu dajo zanj oblikovana gradiva.

Tukaj se lahko spomnite dveh storitev. Prvi je googlefonts.com. Drugi je polyfill.io. Storitev Google Fonts ponuja za določen vir različne kode CSS, odvisno od zmožnosti brskalnika (povezave do virov woff2 z uporabo unicode-range).

Tukaj so rezultati nekaj poizvedb Google Fonts iz različnih brskalnikov.

Samostojni viri tretjih oseb: dobro, slabo, grdo
Rezultat poizvedbe Google Fonts iz Chroma

Samostojni viri tretjih oseb: dobro, slabo, grdo
Rezultat poizvedbe Google Fonts, izvedene iz IE10

Polyfill.io ponuja brskalniku samo polifile, ki jih potrebuje. To se naredi zaradi učinkovitosti.

Na primer, poglejmo, kaj se zgodi, če zaženete naslednjo zahtevo iz različnih brskalnikov: https://polyfill.io/v3/polyfill.js?features=default

Kot odgovor na takšno zahtevo, izvedeno iz IE10, bo prejetih 34 KB podatkov. In odgovor nanj, izveden iz Chroma, bo prazen.

Jezen: nekaj pomislekov glede zasebnosti

Ta točka je zadnja po vrsti, a ne najmanj pomembna. Bistvo je, da lahko samostojno gostovanje virov tretjih oseb na glavni domeni projekta ali na njegovi poddomeni ogrozi zasebnost uporabnikov in negativno vpliva na glavni spletni projekt.

Če vaš sistem CDN ni pravilno konfiguriran, lahko na koncu pošljete piškotke svoje domene storitvi tretje osebe. Če ustrezno filtriranje ni organizirano na ravni CDN, bodo vaši sejni piškotki, ki jih običajno ni mogoče uporabiti v JavaScriptu (z httponly), se lahko pošljejo tujemu gostitelju.

Točno to se lahko zgodi s sledilniki, kot sta Eulerian ali Criteo. Sledilniki tretjih oseb so morda v piškotku nastavili edinstven identifikator. Če so bili del gradiva spletnega mesta, so lahko prebrali identifikator po lastni presoji, medtem ko je uporabnik delal z različnimi spletnimi viri.

Dandanes večina brskalnikov vključuje zaščito pred tovrstnim vedenjem sledilca. Posledično sledilci zdaj uporabljajo tehnologijo Prikrivanje CNAME, ki se predstavljajo kot lastni scenariji za različne projekte. Sledilci namreč lastnikom strani ponujajo, da svojim nastavitvam za določeno domeno dodajo CNAME, katerega naslov je običajno videti kot naključen nabor znakov.

Čeprav ni priporočljivo, da bi piškotki spletnega mesta bili na voljo vsem poddomenam (na primer - *.website.com), veliko spletnih mest to počne. V tem primeru se takšni piškotki samodejno pošljejo prikritemu sledilniku tretje osebe. Posledično ne moremo več govoriti o nobeni zasebnosti.

Enako se zgodi tudi z glavami HTTP Namigi za stranke, ki se pošiljajo samo na glavno domeno, saj jih je mogoče uporabiti za ustvarjanje digitalni prstni odtis uporabnik. Prepričajte se, da storitev CDN, ki jo uporabljate, pravilno filtrira te glave.

Rezultati

Če nameravate kmalu uvesti samostojno gostovanje virov tretjih oseb, naj vam dam nekaj nasvetov:

  • Gostite svoje najpomembnejše knjižnice JS, pisave in datoteke CSS. To bo zmanjšalo tveganje okvare spletnega mesta ali poslabšanja delovanja zaradi nedosegljivosti vira, ključnega pomena za spletno mesto, po krivdi storitve tretje osebe.
  • Preden predpomnite vire tretjih oseb v CDN, se prepričajte, da je pri poimenovanju njihovih datotek uporabljen nekakšen sistem za določanje različic ali da lahko upravljate življenjski cikel teh virov z ročno ali samodejno ponastavitvijo predpomnilnika CDN pri objavi nove različice scenarij.
  • Bodite zelo previdni pri nastavitvah CDN, proxy strežnika in predpomnilnika. To vam bo omogočilo, da preprečite pošiljanje piškotkov vašemu projektu ali glavam Client-Hints storitve tretjih oseb.

Drage bralke in bralci! Ali na svojih strežnikih gostite tuja gradiva, ki so izjemno pomembna za delovanje vaših projektov?

Samostojni viri tretjih oseb: dobro, slabo, grdo
Samostojni viri tretjih oseb: dobro, slabo, grdo

Vir: www.habr.com

Dodaj komentar