Preload, prefetch ja teised sildid

On palju viise veebitootlikkuse tĂ”stmiseks. Üks neist on sisule eelnevalt laadimine, mis on hiljem vajalik. CSS-i eelne laadimine, tĂ€iesti lehe eelne renderdamine vĂ”i domeeninime lahendamine. Teeme kĂ”ik ette Ă€ra ja seejĂ€rel nĂ€itame tulemust koheselt! KĂ”lab hĂ€sti.

Veelgi paremad uudised on see, et see on vÀga lihtne teostada. Viis sildi saadavad brauserile kÀsu eeltöödeks:


Koheselt tutvustame, mida need teevad ja millal neid kasutada.

Mine juurde: preload · prefetch · preconnect · dns-prefetch · prerender

preload

<link rel= "preload"> ĂŒtleb brauserile, et laadida ja vahemĂ€lu varakult ressurssi (nt skripti vĂ”i stiililehte). See on kasulik, kui resurssi on vaja mĂ”ne sekundi pĂ€rast lehe laadimisest — ja soovite protsessi kiirendada.

Brauser ei tee pÀrast ressurssi laadimist selle kanssa midagi. Skripte ei kÀivitata, stiililehti ei rakendata. Ressurss lihtsalt salvestatakse ja antakse kohe nÔudmisel.

SĂŒntaks

<link rel="preload" href="/style.css" as="style" />

href osutab ressursile, mille soovite alla laadida.

as vÔib olla mis tahes, mida brauser suudab alla laadida:

  • style stiililehtede jaoks,
  • script skriptide jaoks,
  • font fontide jaoks,
  • fetch ressursside jaoks, mis on alla laaditud fetch() vĂ”i XMLHttpRequest,
  • tĂ€ielik nimekiri vt. MDN-is.

Oluline on mÀÀrata atribuudi as – see aitab brauseril Ă”igesti mÀÀrata prioriteete ja laadimisplaneerimist.

Millal kasutada

Kasutage eelnevat laadimist, kui resurssi on varsti vaja. NĂ€iteks:

  • Kohandatud fondid vĂ€lisest failist:
    
    
    /* index.css */
    @font-face {
      src: url('comic-sans.woff2') format('woff2');
    }

    Vaikimisi comic-sans.woff2 alustab laadimist alles pÀrast lehe laadimist ja parsimist index.css. Et mitte nii kaua oodata, saab fondi eelnevalt laadida <link rel= "preload">:

    <link rel="preload" href="comic-sans.woff2" as="font" />
  • Kui jagate oma stiile lĂ€henemisega Critical CSS kaheks osaks, kriitiliseks (kohese renderdamise jaoks) ja mitte kriitiliseks:
    /* Inlineeritud kriitilised stiilid */

    Selle lÀhenemisega hakkavad mitte-kriitilised stiilid laadima alles siis, kui JavaScript kÀivitub, mis vÔib toimuda mÔne sekundi pÀrast renderdamisest. Selle asemel, et oodata JS, kasutage <link rel= "preload">, et alustada laadimist varakult:

    /* Inlineeritud kriitilised stiilid */

Ärge kuritarvitage eelnevat laadimist. Kui laadida kĂ”ike jĂ€rjest, ei kiirenda see saiti maagiliselt, vastupidi, see takistab brauseril korralikku tööplaneerimist.

Ärge segage seda eelnerimisega. Ärge kasutage <link rel= "preload">, kui te ei vaja ressurssi kohe pĂ€rast lehe laadimist. Kui see on hiljem vajalik, nĂ€iteks jĂ€rgmise lehe jaoks, kasutage <link rel= "prefetch">.

Üksikasjad

See on kohustuslik silt brauseri tĂ€itmiseks (kui see selle toetab), erinevalt teistest siltidest, mis on seotud eelneva laadimisega. Brauser peab laadima ressurssi, mis on mÀÀratud <link rel="preload">. Muudel juhtudel vĂ”ib see eelmise laadimise ignoreerida, nĂ€iteks kui see töötab aeglasel ĂŒhendusel.

Prioriteedid. Erinevatele ressurssidele (stiilid, skripti, fondid jne) mÀÀravad brauserid tavaliselt erinevad prioriteedid, et laadida kÔige olulisemad ressursid kÔigepealt. Sel juhul mÀÀrab brauser prioriteedi atribuudi jÀrgi as. Chrome'i brauseri puhul saate vaadata tÀielikku prioriteetide tabelit.

Preload, prefetch ja teised sildid

prefetch

<link rel= "prefetch"> palub brauseril laadida ja vahemÀlu ressursse (nt skripti vÔi stiililehte) taustal. Laadimine toimub madala prioriteediga, seetÔttu ei sega see olulisemaid ressursse. See on kasulik, kui resurssi on vajalik jÀrgmisel lehel ja soovite seda eelnevalt vahemÀlu salvestada.

Siin ei tee brauser pÀrast ressurssi laadimist sellekaudu ka midagi. Skripte ei kÀivitata, stiililehti ei rakendata. Ressurss lihtsalt salvestatakse ja antakse kohe nÔudmisel.

SĂŒntaks

<link rel="prefetch" href="/style.css" as="style" />

href osutab ressursile, mille soovite alla laadida.

as vÔib olla mis tahes, mida brauser suudab alla laadida:

  • style stiililehtede jaoks,
  • script skriptide jaoks,
  • font fontide jaoks,
  • fetch ressursside jaoks, mis on alla laaditud fetch() vĂ”i XMLHttpRequest,
  • tĂ€ielik nimekiri vt. MDN-is.

Oluline on mÀÀrata atribuudi as — see aitab brauseril Ă”igesti mÀÀrata prioriteete ja laadimisplaneerimist.

Millal kasutada

Ressursside laadimiseks teistelt lehtedelt, kui soovite, et resurss teiselt lehelt laaditaks eelnevalt, et seejÀrel kiirendada selle lehe renderdamist. NÀiteks:

  • Teie e-poes lahkub 40% kasutajatest peamise lehelt tootelehe peale. Kasutage <link rel= "prefetch">, laadides CSS-i ja JS-failid tootelehtede renderdamiseks.
  • Teil on ĂŒhekpleheline rakendus, kus erinevad lehed laadivad erinevaid pakette. Kui kasutaja kĂŒlastab mĂ”nda lehte, on vĂ”imalik eelaadida pakette kĂ”igist nendest lehtedest, millele ta viitab.

Seda mÀrgendit vÔib tÔenÀoliselt kasutada ohutult mis tahes mahus.Pangad plaanivad tavaliselt eelaadimist madalaima prioriteediga, mistÔttu ei hÀiri see kedagi. Kuid pidage meeles, et see kasutab kasutaja andmesidekoguseid, mis vÔib maksma minna.

Ei sobi kiirete pĂ€ringute jaoks.. Ärge kasutage <link rel= "prefetch">kui ressurssi on vaja mĂ”ne sekundi jooksul. Sel juhul kasutage. <link rel= "preload">.

Üksikasjad

Valikuline mĂ€rgend.Brauser ei pea jĂ€rgima neid juhiseid, ta vĂ”ib need ignoreerida, nĂ€iteks aeglase ĂŒhenduse korral.

Prioriteet Chrome'is.Chrome'is. <link rel= "prefetch"> tavaliselt tÀidetakse minimaalse prioriteediga (vt. tÀielikku prioriteetide tabelit), see tÀhendab, et pÀrast muu sisu laadimist.

preconnect

<link rel= "preconnect"> palub brauseril eelnevalt ĂŒhendada domeeniga, kui soovite edaspidiseks ĂŒhenduse loomist kiirendada.

Brauser peab looma ĂŒhenduse, kui ta tĂ”mbab ressursse uue kolmanda osapoole domeenilt. NĂ€iteks, kui laadib Google Fontsi fonte, React'i CDN-ist vĂ”i kĂŒsib JSON vastust API serverilt.

Uue ĂŒhenduse loomine vĂ”tab tavaliselt paar sada millisekundit. See toimub ĂŒhe korra, kuid vĂ”tab siiski aega. Kui te loote ĂŒhenduse eelnevalt, sÀÀstate aega ja laadite selle domeeni ressursse kiiremini.

SĂŒntaks

<link rel= "preconnect" href="https://api.my-app.com" />

href osutab domeeninimele, mille jaoks IP-aadress tuleb kindlaks teha. Saate esitada selle prefiksiga (https://domain.com) vÔi ilma selleta (//domain.com).

Millal kasutada

Kasutage domeenide jaoks, mis vÔivad varsti vajalikud olla sealstyli, skripti vÔi pildi laadimiseks, kuid te ei tea veel ressursi URL-i. NÀiteks:

  • Teie rakendus asub aadressil my-app.com ja teeb AJAX-pĂ€ringud api.my-app.com: te ei tea ette konkreetseid pĂ€ringuid, kuna need tehakse dĂŒnaamiliselt JS-st. Siin on tĂ€iesti sobiv kasutada mĂ€rgendit domeeniga eelneva ĂŒhenduse loomiseks.
  • Teie rakendus asub aadressil my-app.com ja kasutab Google Fontsi fonte. Need laaditakse kahes etapis: esmalt laaditakse CSS-fail domeenilt fonts.googleapis.com, seejĂ€rel kĂŒsib see fail fonte aadressilt fonts.gstatic.com.Te ei saa teada, milliseid konkreetseid fonte teilt fonts.gstatic.com. vajate, kuni ei ole laaditud CSS-faili, seega saame eelnevaid ĂŒhendusi luua ainult ette.

Kasutage seda mĂ€rgendit, et veidi kiirendada mĂ”nda kolmandat skripti vĂ”i stiili eelneva ĂŒhenduse loomise kaudu.

Ärge ĂŒle pingutage.Ühenduse loomine ja hoidmine on kulukas kui kliendile, nii ka serverile. Kasutage seda mĂ€rgendit maksimaalselt 4-6 domeeni jaoks.

Üksikasjad

Valikuline mĂ€rgend.Brauser ei pea jĂ€rgima seda juhist ja vĂ”ib selle ignoreerida, nĂ€iteks kui on juba loodud liiga palju ĂŒhendusi vĂ”i muudel juhtudel.

Mida hĂ”lmab ĂŒhenduse loomise protsess.Selleks, et iga saidiga ĂŒhendust luua, peab brauser tĂ€itma jĂ€rgmised toimingud:

  • DNS-i lahendamine.Leida IP-aadress serveri (216.58.215.78) jaoks, mis on antud domeeninime (google.com).
  • TCP kĂ€epigistus.Pakettide vahetus (kliendilt → serverile → kliendile), et alustada TCP-ĂŒhendust serveriga.
  • TLS kĂ€epigistus (ainult HTTPS-i saitidel).Kaks pakettide vahetuse ringi (kliendilt → serverile → kliendile → serverile → kliendile), et alustada turvalist TLS-seanssi.

MÀrkus: HTTP/3 parandab ja kiirendab kÀepigistusmehhanismi, kuid see on veel kaugel.

dns-prefetch

<link rel= "dns-prefetch"> palub brauseril eelnevalt teostada DNS-i lahendamise domeenile, kui te varsti ĂŒhendate ja soovite kiirendada algset ĂŒhendust.

Brauser peab kindlaks tegema domeeni IP-aadressi, kui ta tĂ”mbab mĂ”ned ressursid uue kolmanda osapoole domeenilt. NĂ€iteks, laadides Google Fontsi fonte, Reacti CDN-ist vĂ”i kĂŒsides JSON vastust API serverilt.

Iga uue domeeni jaoks vĂ”tab DNS-i kirje lahendamine tavaliselt aega 20−120 ms. See mĂ”jutab ainult selle domeeni esimest ressursi laadimist, kuid siiski esitades viivituse. Kui lahendus tĂ€idetakse eelnevalt, sÀÀstame aega ja laadime ressursse kiiremini.

SĂŒntaks

<link rel= "dns-prefetch" href="https://api.my-app.com" />

href osutab domeeninimele, mille jaoks IP-aadress tuleb kindlaks teha. Saate mÀÀrata selle prefiksiga (https://domain.com) vÔi ilma selleta (//domain.com).

Millal kasutada

Kasutage domeenide jaoks, mis vÔivad varsti vajalikud olla ressursside laadimiseks, millest brauser ei tea ette. NÀiteks:

  • Teie rakendus asub aadressil my-app.com ja teeb AJAX-pĂ€ringud api.my-app.com: te ei tea ette konkreetseid pĂ€ringuid, kuna need tehakse dĂŒnaamiliselt JS-st. Siin on tĂ€iesti sobiv kasutada mĂ€rgendit domeeniga eelneva ĂŒhenduse loomiseks.
  • Teie rakendus asub aadressil my-app.com, ja kasutab Google Fontsi fonte. Need laaditakse kahes etapis: esmalt laaditakse CSS-fail domeenilt fonts.googleapis.com, seejĂ€rel kĂŒsib see fail fonte aadressilt fonts.gstatic.com.Te ei saa teada, milliseid konkreetseid fonte teilt fonts.gstatic.com. te vajate, kuni ei ole laaditud CSS-faili, seega saame eelnevaid ĂŒhendusi luua ainult ette.

Kasutage seda mĂ€rgendit, et veidi kiirendada mĂ”nda kolmandat skripti vĂ”i stiili eelneva ĂŒhenduse loomise kaudu.

Pange tĂ€hele, et sarnased omadused on <link rel= "dns-prefetch"/> ja <link rel= "preconnect">. Nende kasutamine koos ĂŒhe domeeniga ei ole tavaliselt mĂ”istlik: <link rel= "preconnect"> juba sisaldab. <link rel= "dns-prefetch"/> ja palju muud. See on pĂ”hjendatud kahes olukorras:

  • Soovite toetada vanu brauserite. <link rel= "dns-prefetch" /> toetatakse alates IE10 ja Safari 5. <link rel= "preconnect"> oli mĂ”nda aega toetatud Chrome'is ja Firefoxis, kuid lisati Safari'sse alles versioonis 11.1 ja ei ole endiselt toetatud IE/Edge. Kui pead toetama neid brausereid, kasuta <link rel= "dns-prefetch" /> varuvĂ”imalusena <link rel= "preconnect">.
  • Soovite kiirendada ĂŒhendust rohkem kui 4–6 domeeniga. Tagi <link rel= "preconnect"> ei soovitata kasutada rohkem kui 4–6 domeeni, kuna ĂŒhenduse loomine ja hoidmine on kulukas protsess. <link rel= "dns-prefetch" /> kasutab vĂ€hem ressursse, seega kasuta seda vajadusel.

Üksikasjad

Valikuline mÀrgend.. Brauser ei ole kohustatud jÀrgima seda juhist, seega vÔib see mitte teostada DNS-i lahendamist, kui lehel on palju selliseid tage vÔi mÔnes muus olukorras.

Mis on DNS. Igal serveril internetis on ainulaadne IP-aadress, mis nĂ€eb vĂ€lja nagu 216.58.215.78. Brauseri aadressivĂ€lja sisestatakse tavaliselt veebisaidi nimi (nt google.com), ja DNS-serverid (domeeninime sĂŒsteem) seostavad selle serveri IP-aadressiga (216.58.215.78).

Brauser peab IP-aadressi mÀÀramiseks tegema pĂ€ringu DNS-serverile. See vĂ”tab aega 20–120 ms, kui ĂŒhendate uue kolmanda osapoole domeeniga.

DNS-i vahemĂ€lu, kuigi mitte vĂ€ga usaldusvÀÀrselt. MĂ”ned opsĂŒsteemid ja brauserid vahemĂ€letavad DNS-pĂ€ringud: see sÀÀstab aega korduvate pĂ€ringute korral, kuid vahemĂ€lu pole usaldusvÀÀrne. Linuxis see tavaliselt ei toimi. Chrome'il on DNS-i vahemĂ€lu, kuid see kestab vaid minuti. Windows vahemĂ€letab DNS-vastuseid viie pĂ€eva jooksul.

prerender

<link rel= "prerender"> palub brauseril laadida URL-i ja kuvada see nĂ€htamatul vahekaardil. Kui kasutaja klĂ”psab lingil, peaks leht ilmuma kohe. See on kasulik, kui oled kindel, et kasutaja kĂŒlastab kindlat lehte ja soovid selle kuvamist kiirendada.

Hoolimata selle sildi erakordsest tÔhususest (vÔi seetÔttu), ei olnud see 2019. aastal <link rel= "prerender"> peamiseks brauserite poolt halvasti toetatud. Lisainformatsioon vaata. allpool.

SĂŒntaks

<link rel="prerender" href="https://my-app.com/pricing" />

href osutab URL-ile, mille jaoks soovite taustal renderdamist kÀivitada.

Millal kasutada

Kui oled tĂ”eliselt kindel, et kasutaja liigub kindlale lehele. Kui sul on 'tunnel', kus 70% kĂŒlastajatest lehelt A lĂ€hevad lehele B, siis <link rel= "prerender"> lehel A aitab vĂ€ga kiiresti kuvada lehte B.

Ärge ĂŒle pingutage.. Eelrenderdamine on ÀÀrmiselt kulukas andmeside ja mĂ€lu osas. Ära kasuta <link rel= "prerender"> rohkem kui ĂŒhe lehe jaoks.

Üksikasjad

Valikuline mĂ€rgend.. Brauser ei ole kohustatud jĂ€rgima seda juhist ja vĂ”ib selle ignoreerida, nĂ€iteks aeglases ĂŒhenduses vĂ”i mĂ€luruumi ebapiisava suuruse korral.

MÀlu sÀÀstmiseks Chrome ei teosta tÀielikku renderdamist, ja ainult eelkoormamine NoState. See tÀhendab, et Chrome laadib lehe ja kÔik selle ressursid, kuid ei teosta renderdamist ega kÀivita JavaScripti.

Firefox ja Safari ei toeta seda sildi ĂŒldse. See ei rikku spetsifikatsiooni, kuna brauserid ei ole kohustatud seda juhist jĂ€rgima; kuid siiski on see kahju. Implementatsiooni tĂ”rge Firefoxis oli avastatud seitsme aasta jooksul. On teateid, et Safari ei toeta ka seda sildi.

KokkuvÔte

Kasutage:

  • <link rel= "preload"> — kui sul on vaja ressurssi paari sekundi jooksul
  • <link rel= "prefetch"> — kui sul on vaja ressurssi jĂ€rgmise lehe jaoks
  • <link rel= "preconnect"> — kui tead, et sul on peagi vaja ressurssi, kuid sa ei tea veel selle tĂ€pset URL-i
  • <link rel= "dns-prefetch"> — sarnaselt, kui tead, et sul on peagi vaja ressurssi, kuid sa ei tea veel selle tĂ€pset URL-i (vana brauserite jaoks)
  • <link rel= "prerender"> — kui oled kindel, et kasutajad liiguvad kindlale lehele, ja soovid selle kuvamist kiirendada

Allikas: habr.com

Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster