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
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.
TreÅ”o puÅ”u resursi tiek lejupielÄdÄti no ÄrÄjiem avotiem (Åemti no
TreÅ”o puÅ”u resursi tiek glabÄti tajÄ paÅ”Ä vietÄ, kur pÄrÄjie vietnes materiÄli (Åemti no
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.
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
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
vecie pÄtÄ«jumi
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.
Google fontu vaicÄjuma rezultÄts no pÄrlÅ«ka Chrome
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:
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
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
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?
Avots: www.habr.com