PaŔmitināŔanas treŔo puŔu resursi: labie, sliktie, neglītie

Pēdējos gados arvien vairāk platformu priekÅ”gala projektu optimizÄ“Å”anai piedāvā iespējas paÅ”am mitināt vai izmantot starpniekserverus treÅ”o puÅ”u resursiem. Akamai ļauj iestatÄ«t konkrēti parametri paÅ”u Ä£enerētiem URL. Cloudflare ir Edge Workers tehnoloÄ£ija. Fasterzine var pārrakstÄ«t URL lapās, lai tie norādÄ«tu uz treŔās puses resursiem, kas atrodas vietnes galvenajā domēnā.

PaŔmitināŔanas treŔo puŔu resursi: labie, sliktie, neglītie

Ja zināt, ka jÅ«su projektā izmantotie treÅ”o puÅ”u pakalpojumi nemainās ļoti bieži un ka varētu uzlabot to piegādes procesu klientiem, tad droÅ”i vien domājat par Ŕādu pakalpojumu starpniekserveri. Izmantojot Å”o pieeju, jÅ«s varat ļoti labi tuvināt Å”os resursus saviem lietotājiem un iegÅ«t pilnÄ«gāku kontroli pār viņu keÅ”atmiņu klienta pusē. Tas turklāt ļauj aizsargāt lietotājus no problēmām, ko izraisa treŔās puses pakalpojuma ā€œavārijaā€ vai tā veiktspējas pasliktināŔanās.

Labi: uzlabota veiktspēja

Kāda cita resursu paÅ”mitināŔana uzlabo veiktspēju ļoti acÄ«mredzamā veidā. PārlÅ«kprogrammai nav atkārtoti jāpiekļūst DNS, tai nav jāizveido TCP savienojums un jāveic TLS rokasspiediens treŔās puses domēnā. Varat redzēt, kā kāda cita resursu paÅ”mitināŔana ietekmē veiktspēju, salÄ«dzinot divus tālāk norādÄ«tos skaitļus.

PaŔmitināŔanas treŔo puŔu resursi: labie, sliktie, neglītie
TreÅ”o puÅ”u resursi tiek lejupielādēti no ārējiem avotiem (ņemti no tātad)

PaŔmitināŔanas treŔo puŔu resursi: labie, sliktie, neglītie
TreÅ”o puÅ”u resursi tiek glabāti tajā paŔā vietā, kur pārējie vietnes materiāli (ņemti no tātad)

Situāciju uzlabo arī tas, ka pārlūkprogramma izmantos iespēju multipleksēt un prioritizēt datus no HTTP/2 savienojuma, kas jau ir izveidots ar galveno domēnu.

Ja neviesojat treŔās puses resursus, tad, tā kā tie tiks ielādēti no domēna, kas atŔķiras no galvenā domēna, tiem nevar pieŔķirt prioritāti. Tas liks viņiem konkurēt savā starpā par klienta joslas platumu. Tas var izraisÄ«t lapas izveidei bÅ«tiska satura ielādes laiku, kas ir daudz ilgāks, nekā tas bÅ«tu sasniedzams ideālos apstākļos. Å”eit ir runāt par HTTP/2 prioritāŔu noteikÅ”anu, kas to visu ļoti labi izskaidro.

Var pieņemt, ka atribÅ«tu izmantoÅ”ana saitēs uz ārējiem resursiem preconnect palÄ«dzēs problēmas risināŔanā. Tomēr, ja Å”o saiÅ”u uz dažādiem domēniem ir pārāk daudz, tas faktiski var pārslogot sakaru lÄ«niju vissvarÄ«gākajā brÄ«dÄ«.

Ja pats mitināt treŔās puses resursus, varat kontrolēt, kā tieÅ”i Å”ie resursi tiek pieŔķirti klientam. Proti, mēs runājam par sekojoÅ”o:

  • Varat nodroÅ”ināt, ka tiek izmantots katrai pārlÅ«kprogrammai vispiemērotākais datu saspieÅ”anas algoritms (Brotli/gzip).
  • Varat palielināt keÅ”atmiņas laiku resursiem, kas parasti nav Ä«paÅ”i gari, pat izmantojot vispazÄ«stamākos pakalpojumu sniedzējus (piemēram, atbilstoŔā GA taga vērtÄ«ba ir iestatÄ«ta uz 30 minÅ«tēm).

Varat pat pagarināt resursa TTL, piemēram, uz gadu, iekļaujot atbilstoÅ”u saturu savā keÅ”atmiņas pārvaldÄ«bas stratēģijā (URL jaucējkodi, versiju veidoÅ”ana utt.). Par to mēs runāsim tālāk.

ā–AizsardzÄ«ba pret pārtraukumiem treÅ”o puÅ”u pakalpojumu darbÄ«bā vai to izslēgÅ”anu

Vēl viens interesants treÅ”o puÅ”u resursu paÅ”mitināŔanas aspekts ir tas, ka tas ļauj mazināt riskus, kas saistÄ«ti ar treÅ”o puÅ”u pakalpojumu pārtraukumiem. Pieņemsim, ka jÅ«su izmantotais treŔās puses A/B testÄ“Å”anas risinājums ir ieviests kā bloķējoÅ”s skripts, kas tiek ielādēts lapas galvenajā sadaļā. Å is skripts tiek ielādēts lēni. Ja atbilstoÅ”o skriptu neizdodas ielādēt, lapa bÅ«s tukÅ”a. Ja ielāde aizņem ļoti ilgu laiku, lapa parādÄ«sies ar lielu aizkavi. Vai arÄ« pieņemsim, ka projektā tiek izmantota bibliotēka, kas lejupielādēta no treŔās puses CDN resursa. Iedomāsimies, ka Å”is resurss piedzÄ«voja kļūmi vai tika bloķēts noteiktā valstÄ«. Šāda situācija izraisÄ«s vietnes loÄ£ikas pārkāpumu.

Lai uzzinātu, kā jūsu vietne darbojas, kad kāds ārējais pakalpojums nav pieejams, varat izmantot SPOF sadaļu webpagetest.org.

PaŔmitināŔanas treŔo puŔu resursi: labie, sliktie, neglītie
SPOF sadaļa vietnē webpagetest.org

ā–Kā ir ar problēmām ar materiālu saglabāŔanu keÅ”atmiņā pārlÅ«kprogrammās? (padoms: tas ir mÄ«ts)

Varētu domāt, ka publisko CDN izmantoÅ”ana automātiski uzlabos resursu veiktspēju, jo Å”iem pakalpojumiem ir diezgan augstas kvalitātes tÄ«kli un tie tiek izplatÄ«ti visā pasaulē. Bet patiesÄ«bā viss ir nedaudz sarežģītāk.

Pieņemsim, ka mums ir vairākas dažādas vietnes: vietne1.com, vietne2.com, vietne3.com. Visas Ŕīs vietnes izmanto jQuery bibliotēku. Mēs to savienojam ar viņiem, izmantojot CDN, piemēram - googleapis.com. Varat sagaidÄ«t, ka pārlÅ«kprogramma vienreiz lejupielādēs un saglabās bibliotēku keÅ”atmiņā un pēc tam izmantos to visās trÄ«s vietnēs. Tas varētu samazināt tÄ«kla slodzi. VarbÅ«t tas ļaus kaut kur ietaupÄ«t naudu un palÄ«dzēt uzlabot resursu veiktspēju. No praktiskā viedokļa viss izskatās savādāk. Piemēram, Safari ir funkcija, ko sauc Intelektuālas izsekoÅ”anas novērÅ”ana: keÅ”atmiņā tiek izmantotas divas atslēgas, pamatojoties uz dokumenta avotu un treŔās puses resursa avotu. Å”eit ir labs raksts par Å”o tēmu.

vecie pētÄ«jumi lauÄ·is Šø Facebook, kā arÄ« jaunāki pētÄ«jums Pols Kalvano, parādiet, ka resursi netiek glabāti pārlÅ«kprogrammas keÅ”atmiņā tik ilgi, cik mēs varētu gaidÄ«t: ā€œPastāv nopietna atŔķirÄ«ba starp projekta paÅ”a un treŔās puses resursu keÅ”atmiņas laiku. Mēs runājam par CSS un tÄ«mekļa fontiem. Proti, 95% vietējo fontu keÅ”atmiņas mūžs ir ilgāks par nedēļu, savukārt 50% treÅ”o puÅ”u fontu keÅ”atmiņas mūžs ir mazāks par nedēļu! Tas dod tÄ«mekļa izstrādātājiem pārliecinoÅ”u iemeslu paÅ”iem mitināt fontu failus!

Tā rezultātā, ja mitināt citu personu saturu, jÅ«s nepamanÄ«sit veiktspējas problēmas, ko izraisa pārlÅ«kprogrammas keÅ”atmiņa.

Tagad, kad esam apskatījuŔi treŔās puses paŔmitināŔanas stiprās puses, parunāsim par to, kā atŔķirt labu Ŕīs pieejas ievieŔanu no sliktas.

Sliktais: velns slēpjas detaļās

TreÅ”o puÅ”u resursu pārvietoÅ”ana uz savu domēnu nevar tikt veikta automātiski, nenodroÅ”inot Ŕādu resursu pareizu keÅ”atmiņu.

Viena no galvenajām problēmām Å”eit ir keÅ”atmiņas laiks. Piemēram, versijas informācija ir iekļauta treŔās puses skriptu nosaukumos, piemēram: jquery-3.4.1.js. Šāds fails turpmāk nemainÄ«sies, un rezultātā tas neradÄ«s problēmas ar tā saglabāŔanu keÅ”atmiņā.

Bet, ja kāda versijas shēma netiek izmantota, strādājot ar failiem, keÅ”atmiņā saglabātie skripti, kuru saturs mainās, faila nosaukumam paliekot nemainÄ«gam, var novecot. Tā var bÅ«t nopietna problēma, jo tā, piemēram, neļauj pievienot automatizētus droŔības ielāpus skriptiem, kas klientiem jāsaņem pēc iespējas ātrāk. Izstrādātājam bÅ«s jāpieliek pÅ«les, lai atjauninātu Ŕādus skriptus keÅ”atmiņā. Turklāt tas var izraisÄ«t lietojumprogrammu kļūmes, jo klientam izmantotais kods no keÅ”atmiņas atŔķiras no jaunākās koda versijas, kurai ir paredzēta projekta servera daļa.

Tiesa, ja runājam par materiāliem, kas tiek bieži atjaunināti (tagu pārvaldnieki, risinājumi A/B testÄ“Å”anai), tad to saglabāŔana keÅ”atmiņā, izmantojot CDN rÄ«kus, ir atrisināms, taču daudz sarežģītāks uzdevums. Tādos pakalpojumos kā Commanders Act, tagu pārvaldÄ«bas risinājums, tiek izmantotas tÄ«mekļa aizÄ·eres, publicējot jaunas versijas. Tas dod jums iespēju piespiest CDN iztukÅ”ot keÅ”atmiņu vai, vēl labāk, iespēju piespiest jaukt vai URL atjauninājumu.

ā–AdaptÄ«va materiālu piegāde klientiem

Turklāt, runājot par keÅ”atmiņu, mums jāņem vērā fakts, ka CDN izmantotie keÅ”atmiņas iestatÄ«jumi var nebÅ«t piemēroti dažiem treÅ”o puÅ”u resursiem. Piemēram, Ŕādos resursos var izmantot lietotāja aÄ£enta sniffing (adaptÄ«vās apkalpoÅ”anas) tehnoloÄ£iju, lai apkalpotu noteiktas pārlÅ«kprogrammas ar satura versijām, kas optimizētas tieÅ”i Ŕīm pārlÅ«kprogrammām. Å Ä«s tehnoloÄ£ijas balstās uz regulārām izteiksmēm vai HTTP galvenes informācijas datubāzi, lai noskaidrotu pārlÅ«kprogrammas iespējas. User-Agent. TiklÄ«dz viņi zina, ar kuru pārlÅ«kprogrammu viņiem ir darÄ«Å”ana, viņi sniedz tai paredzētus materiālus.

Å eit jÅ«s varat atcerēties divus pakalpojumus. Pirmais ir googlefonts.com. Otrais ir polyfill.io. Google Fonts pakalpojums noteiktam resursam nodroÅ”ina dažādu CSS kodu atkarÄ«bā no pārlÅ«kprogrammas iespējām (dodot saites uz woff2 resursiem, izmantojot unicode-range).

Šeit ir daži Google fontu vaicājumi, kas veikti no dažādām pārlūkprogrammām.

PaŔmitināŔanas treŔo puŔu resursi: labie, sliktie, neglītie
Google fontu vaicājuma rezultāts no pārlūka Chrome

PaŔmitināŔanas treŔo puŔu resursi: labie, sliktie, neglītie
Google fontu vaicājuma rezultāts, kas izpildīts no IE10

Polyfill.io nodroÅ”ina pārlÅ«kprogrammai tikai tai nepiecieÅ”amos poliaizpildÄ«jumus. Tas tiek darÄ«ts veiktspējas apsvērumu dēļ.

Piemēram, apskatÄ«sim, kas notiek, ja palaižat Ŕādu pieprasÄ«jumu no dažādām pārlÅ«kprogrammām: https://polyfill.io/v3/polyfill.js?features=default

Atbildot uz Ŕādu pieprasÄ«jumu, kas izpildÄ«ts no IE10, tiks saņemti 34 KB datu. Un atbilde uz to, kas izpildÄ«ta no Chrome, bÅ«s tukÅ”a.

Dusmīgs: daži privātuma apsvērumi

Å is punkts ir pēdējais, bet ne mazāk svarÄ«gs. Lieta ir tāda, ka treŔās puses resursu paÅ”mitināŔana projekta galvenajā domēnā vai tā apakÅ”domēnā var apdraudēt lietotāju privātumu un negatÄ«vi ietekmēt galveno tÄ«mekļa projektu.

Ja jÅ«su CDN sistēma nav pareizi konfigurēta, varat nosÅ«tÄ«t sava domēna sÄ«kfailus treŔās puses pakalpojumam. Ja CDN lÄ«menÄ« nav organizēta pareiza filtrÄ“Å”ana, jÅ«su sesijas sÄ«kfaili, kurus parasti nevar izmantot JavaScript (ar httponly), var nosÅ«tÄ«t ārzemju uzņēmējam.

TieÅ”i tas var notikt ar tādiem izsekotājiem kā Eulerian vai Criteo. Iespējams, treŔās puses izsekotāji sÄ«kfailā ir iestatÄ«juÅ”i unikālu identifikatoru. Ja tie bija daļa no vietnes materiāliem, viņi varēja lasÄ«t identifikatoru pēc saviem ieskatiem, kamēr lietotājs strādāja ar dažādiem tÄ«mekļa resursiem.

MÅ«sdienās lielākajā daļā pārlÅ«kprogrammu ir iekļauta aizsardzÄ«ba pret Ŕāda veida izsekotāju darbÄ«bu. Tā rezultātā izsekotāji tagad izmanto tehnoloÄ£iju CNAME maskÄ“Å”ana, maskējas kā viņu paÅ”u skripti dažādiem projektiem. Proti, izsekotāji piedāvā vietņu Ä«paÅ”niekiem pievienot CNAME saviem iestatÄ«jumiem noteiktam domēnam, kura adrese parasti izskatās pēc nejauÅ”as rakstzÄ«mju kopas.

Lai gan nav ieteicams padarÄ«t vietņu sÄ«kfailus pieejamus visiem apakÅ”domēniem (piemēram, *.website.com), daudzas vietnes to dara. Šādā gadÄ«jumā Ŕādas sÄ«kdatnes tiek automātiski nosÅ«tÄ«tas uz slēptu treŔās puses izsekotāju. Tā rezultātā mēs vairs nevaram runāt par privātumu.

Tāpat tas pats notiek ar HTTP galvenēm Klients-Padomi, kas tiek nosÅ«tÄ«ti tikai uz galveno domēnu, jo tos var izmantot, lai izveidotu digitālais pirkstu nospiedums lietotājs. Pārliecinieties, vai jÅ«su izmantotais CDN pakalpojums pareizi filtrē Ŕīs galvenes.

Rezultāti

Ja drīzumā plānojat ieviest treŔo puŔu resursu paŔmitināŔanu, ļaujiet man sniegt dažus padomus:

  • Mitiniet savas svarÄ«gākās JS bibliotēkas, fontus un CSS failus. Tas samazinās vietnes kļūmes vai veiktspējas pasliktināŔanās risku, jo vietnei svarÄ«gs resurss nav pieejams treŔās puses pakalpojuma vainas dēļ.
  • Pirms treÅ”o puÅ”u resursu keÅ”atmiņas ievietoÅ”anas CDN, pārliecinieties, vai, pieŔķirot nosaukumus to failiem, tiek izmantota kāda veida versiju veidoÅ”anas sistēma vai ka varat pārvaldÄ«t Å”o resursu dzÄ«ves ciklu, manuāli vai automātiski atiestatot CDN keÅ”atmiņu, publicējot jaunu scenārijs.
  • Esiet ļoti uzmanÄ«gs attiecÄ«bā uz CDN, starpniekservera un keÅ”atmiņas iestatÄ«jumiem. Tas ļaus jums novērst sÄ«kfailu sÅ«tÄ«Å”anu jÅ«su projektam vai galvenēm Client-Hints treÅ”o puÅ”u pakalpojumi.

Cienījamie lasītāji! Vai savos serveros izvietojat citu cilvēku materiālus, kas ir ārkārtīgi svarīgi jūsu projektu darbībai?

PaŔmitināŔanas treŔo puŔu resursi: labie, sliktie, neglītie
PaŔmitināŔanas treŔo puŔu resursi: labie, sliktie, neglītie

Avots: www.habr.com

Pievieno komentāru