Det finns . Ett av dem Àr att förladda innehÄll som kommer att behövas senare. Pre-fetching av CSS, förrendering av hela sidan eller domÀnnamnsupplösning. Vi gör allt i förvÀg och visar sedan resultatet omedelbart! LÄter fantastiskt.
Ănnu bĂ€ttre Ă€r att detta Ă€r vĂ€ldigt enkelt att implementera. Fem <link rel>-taggar ger webblĂ€saren order om förhandsĂ„tgĂ€rder:
<link rel="prefetch" href="/style.css" as="style" />
<link rel="preload" href="/style.css" as="style" />
<link rel="preconnect" href="https://example.com" />
<link rel="dns-prefetch" href="https://example.com" />
<link rel="prerender" href="https://example.com/about.html" />
Kortfattat ska vi förklara vad de gör och nÀr de ska anvÀndas.
GÄ till: · · · ·
preload
<link rel="preload"> berÀttar webblÀsaren att sÄ tidigt som möjligt ladda och cacha resurser (sÄsom skript eller stilmallar). Detta Àr anvÀndbart nÀr resursen kommer att behövas nÄgra sekunder efter att sidan har laddats - och du vill snabba upp processen.
WebblÀsaren gör ingenting med resursen efter att den har laddats. Skripten körs inte, stilmallarna appliceras inte. Resursen cacheras bara och tillhandahÄlls omedelbart pÄ begÀran.
Syntax
<link rel="preload" href="/style.css" as="style" /> href pekar pÄ resursen som du vill ladda ner.
som kan vara vad som helst som gÄr att ladda ner i webblÀsaren:
styleför stilmallar,scriptför skript,fontför typsnitt,fetchför resurser som laddas medfetch()ellerXMLHttpRequest,- fullstÀndig lista se. .
Det Ă€r viktigt att ange attributet som â det hjĂ€lper webblĂ€saren att korrekt prioritera och planera laddningen.
NÀr anvÀnda
AnvÀnd preload nÀr resursen kommer att behövas inom kort. Till exempel:
- Ovanliga typsnitt frÄn en extern fil:
<!-- index.html --> <link rel="stylesheet" href="index.css" /> /* index.css */ @font-face { src: url('comic-sans.woff2') format('woff2'); }Som standard
comic-sans.woff2börjar ladda först efter att den har laddats och analyserats.index.cssFör att inte behöva vÀnta sÄ lÀnge kan du ladda typsnittet tidigare med<link rel="preload">:<link rel="preload" href="comic-sans.woff2" as="font" /> - Om du delar dina stilar enligt metoden i tvÄ delar, kritisk (för omedelbar rendering) och icke-kritisk:
<style> /* Inlined critical styles */ </style> <script> /* Custom JS that starts downloading non-critical styles */ loadCSS('/app/non-critical.css'); </script>Med den hÀr metoden kommer icke-kritiska stilar att börja laddas först nÀr JavaScript har körts, vilket kan ske efter nÄgra sekunder efter rendering. AnvÀnd istÀllet
<link rel="preload">, för att pÄbörja inladdningen tidigare:/* Inbakade kritiska stilar */
Ăverdriv inte med förladdning. Om du laddar allt pĂ„ en gĂ„ng kommer sidan inte att bli snabbare magiskt, tvĂ€rtom kan det förhindra att webblĂ€saren planerar arbetet pĂ„ ett effektivt sĂ€tt.
FörvÀxla inte med prefetching. AnvÀnd inte <link rel="preload">, om du inte behöver resursen omedelbart efter att sidan har laddats. Om den behövs senare, till exempel pÄ nÀsta sida, anvÀnd <link rel= "prefetch">.
Detaljer
Detta Àr en obligatorisk tagg för webblÀsaren (om den stöder den), till skillnad frÄn alla andra -taggar relaterade till förladdning. WebblÀsaren mÄste ladda resursen som anges i <link rel="preload">. I andra fall kan den ignorera förladdningen, till exempel om den arbetar pÄ en lÄngsam anslutning.
Prioriteringar. Olika resurser (stilar, skript, teckensnitt osv.) fÄr vanligtvis olika prioriteter av webblÀsare för att först ladda de viktigaste resurserna. I det hÀr fallet bestÀmmer webblÀsaren prioriteten baserat pÄ attributet som. För Chrome-webblÀsaren kan du se .
prefetch
<link rel= "prefetch"> ber om att webblÀsaren ska ladda och cacha resursen (till exempel ett skript eller en stil) i bakgrunden. Laddningen sker med lÄg prioritet, sÄ det stör inte mer viktiga resurser. Detta Àr anvÀndbart om resursen behövs pÄ nÀsta sida och du vill cacha den i förvÀg.
HÀr gör webblÀsaren inget med resursen efter att den har laddats. Skript körs inte, stilar tillÀmpas inte. Resursen cachas bara och görs omedelbart tillgÀnglig pÄ begÀran.
Syntax
<link rel="prefetch" href="/style.css" as="style" /> href pekar pÄ resursen som du vill ladda ner.
som kan vara vad som helst som gÄr att ladda ner i webblÀsaren:
styleför stilmallar,scriptför skript,fontför typsnitt,fetchför resurser som laddas medfetch()ellerXMLHttpRequest,- fullstÀndig lista se. .
Det Ă€r viktigt att ange attributet som â det hjĂ€lper webblĂ€saren att prioritera och planera laddningen pĂ„ rĂ€tt sĂ€tt.
NÀr anvÀnda
För att ladda resurser frÄn andra sidor, om resursen frÄn en annan sida behövs och du vill förladda den för att sedan pÄskynda rendering av den sidan. Till exempel:
- Du har en webbshop, och 40% av anvÀndarna lÀmnar startsidan för produktens sida. AnvÀnd
<link rel= "prefetch">, genom att ladda CSS- och JS-filer för att rendera sidor med produkten. - Du har en enkel-sidapp, och olika sidor laddar olika paket. NÀr en anvÀndare besöker en sida kan du förhandsladda paketen för alla sidor som den lÀnkar till.
Denna tagg kan troligen anvÀndas sÀkert i valfri mÀngd. WebblÀsare planerar vanligtvis prefetch med lÀgsta prioritet, sÄ det stör ingen. TÀnk bara pÄ att det förbrukar anvÀndarens trafik, vilket kan kosta pengar.
Inte för brÄdskande förfrÄgningar. AnvÀnd inte <link rel= "prefetch">, nÀr resursen behövs inom nÄgra sekunder. I det hÀr fallet, anvÀnd <link rel="preload">.
Detaljer
Valfri tagg. WebblÀsaren Àr inte skyldig att följa denna instruktion, den kan ignorera den, till exempel pÄ en lÄngsam anslutning.
Prioritet i Chrome. I Chrome <link rel= "prefetch"> utförs vanligtvis med minimal prioritet (se ), det vill sÀga efter att allt annat har laddats.
preconnect
<link rel= "preconnect"> ber webblÀsaren att ansluta till domÀnen i förvÀg nÀr du vill snabba upp anslutningen i framtiden.
WebblÀsaren bör etablera en anslutning om den hÀmtar resurser frÄn en ny extern domÀn. Till exempel, om den laddar typsnitt frÄn Google Fonts, React frÄn CDN, eller gör en begÀran om JSON-svar frÄn API-servern.
Det tar vanligtvis flera hundra millisekunder att upprÀtta en ny anslutning. Den görs en gÄng, men den tar ÀndÄ tid. Om du har upprÀttat en anslutning i förvÀg, sparar du tid och laddar resurser snabbare frÄn denna domÀn.
Syntax
<link rel= "preconnect" href="https://api.my-app.com" /> href anger domÀnnamnet för vilket IP-adressen ska upprÀttas. Det kan anges med ett prefix (https://domain.com) eller utan (//domain.com).
NÀr anvÀnda
AnvÀnd för domÀner som snart behövs för att ladda viktiga stilar, skript eller bilder dÀrifrÄn, men du vet fortfarande inte URL:en för resursen. Till exempel:
- Din applikation Àr hostad pÄ
my-app.comoch gör AJAX-förfrÄgningar tillapi.my-app.com: du vet inte pÄ förhand vilka specifika förfrÄgningar som görs, eftersom de görs dynamiskt frÄn JS. HÀr Àr det helt i sin ordning att anvÀnda taggen för förhandsanslutning till domÀnen. - Din applikation Àr hostad pÄ
my-app.comoch anvÀnder typsnitt frÄn Google Fonts. De laddas i tvÄ steg: först laddas CSS-filen frÄn domÀnenfonts.googleapis.com, dÀrefter begÀr den filen typsnitt frÄnfonts.gstatic.com.Du kan inte veta vilka specifika typsnittsfiler somfonts.gstatic.com.Du kommer att behöva, tills du har laddat upp CSS-filen, sÄ vi kan i förvÀg bara upprÀtta en preliminÀr anslutning.
AnvÀnd denna tagg för att lite snabba upp ett tredjepartsskript eller -stil genom att förbereda anslutningen.
Missbruk inte. Att upprÀtta och underhÄlla en anslutning Àr en kostsam operation bÄde för klienten och servern. AnvÀnd denna tagg högst för 4-6 domÀner.
Detaljer
Valfri tagg. WebblÀsaren Àr inte skyldig att följa denna instruktion och kan ignorera den, till exempel om det redan finns mÄnga anslutningar eller i nÄgot annat fall.
Vad ingÄr i anslutningsprocessen. För att ansluta till varje webbplats mÄste webblÀsaren utföra följande ÄtgÀrder:
- DNS-upplösning. Hitta IP-adressen till servern (
216.58.215.78) för det angivna domĂ€nnamnet (google.com). - TCP-handshake. Utbyte av paket (klient â server â klient) för att initiera TCP-anslutningen till servern.
- TLS-handshake (endast för HTTPS-webbplatser). TvĂ„ omgĂ„ngar av paketutbyte (klient â server â klient â server â klient) för att initiera en sĂ€ker TLS-session.
Observera: HTTP/3 kommer att förbÀttra och snabba upp handskakningsmekanismen, men det Àr fortfarande lÄngt borta.
dns-prefetch
<link rel= "dns-prefetch"> ber webblÀsaren att i förvÀg utföra DNS-upplösning för domÀnen om du snart kommer att ansluta till den och vill snabba upp den initiala anslutningen.
WebblÀsaren mÄste avgöra IP-adressen för domÀnen om den ska hÀmta nÄgra resurser frÄn en ny tredjepartsdomÀn. Till exempel ladda Google Fonts, React frÄn CDN eller begÀra JSON-svar frÄn API-servern.
För varje ny domĂ€n tar det vanligtvis cirka 20â120 ms att lösa DNS-poster. Detta pĂ„verkar endast inlĂ€sningen av den första resursen frĂ„n denna domĂ€n, men representerar Ă€ndĂ„ en fördröjning. Om DNS-upplösning görs i förvĂ€g sĂ„ sparar vi tid och laddar resursen snabbare.
Syntax
<link rel= "dns-prefetch" href="https://api.my-app.com" /> href angiver domÀnnamnet för vilket IP-adressen ska upprÀttas. Kan anges med prefix (https://domain.com) eller utan (//domain.com).
NÀr anvÀnda
AnvÀnd för domÀner som snart behövs för att ladda resurser dÀrifrÄn som webblÀsaren inte kÀnner till i förvÀg. Till exempel:
- Din applikation Àr hostad pÄ
my-app.comoch gör AJAX-förfrÄgningar tillapi.my-app.com: du vet inte pÄ förhand vilka specifika förfrÄgningar som görs, eftersom de görs dynamiskt frÄn JS. HÀr Àr det helt i sin ordning att anvÀnda taggen för förhandsanslutning till domÀnen. - Din applikation Àr hostad pÄ
my-app.com, och anvÀnder Google Fonts. De laddas i tvÄ steg: först laddas CSS-filen frÄn domÀnenfonts.googleapis.com, dÀrefter begÀr den filen typsnitt frÄnfonts.gstatic.com.Du kan inte veta vilka specifika typsnittsfiler somfonts.gstatic.com.du kommer att behöva, tills du har laddat upp CSS-filen, sÄ vi kan i förvÀg bara upprÀtta en preliminÀr anslutning.
AnvÀnd denna tagg för att lite snabba upp ett tredjepartsskript eller -stil genom att förbereda anslutningen.
Observera liknande egenskaper pÄ
<link rel= "dns-prefetch"/>och<link rel= "preconnect">. Att anvÀnda dem tillsammans för en domÀn Àr vanligtvis meningslöst:<link rel= "preconnect">inkluderar redan<link rel= "dns-prefetch"/>och mycket mer. Detta kan rÀttfÀrdigas i tvÄ fall:
- Du vill stödja gamla webblÀsare.
<link rel= "dns-prefetch" />endast manuellt via lĂ€get «about:debugging» och krĂ€ver tillĂ€mpning av en patch. .<link rel= "preconnect">har ett tag stödts i Chrome och Firefox, men lades till i Safari först i 11.1 och . Om du behöver stödja dessa webblĂ€sare, anvĂ€nd<link rel= "dns-prefetch" />som en reservlösning för<link rel= "preconnect">.- Du vill snabba upp anslutningar till mer Ă€n 4â6 domĂ€ner. Taggen
<link rel= "preconnect">rekommenderas inte att anvĂ€nda med mer Ă€n 4â6 domĂ€ner, eftersom installation och underhĂ„ll av anslutningen Ă€r en kostsam operation.<link rel= "dns-prefetch" />förbrukar mindre resurser, sĂ„ anvĂ€nd det om det behövs.
Detaljer
Valfri tagg. WebblÀsaren Àr inte skyldig att följa denna instruktion, och kan dÀrför vÀlja att inte göra DNS-upplösning, till exempel om det finns mÄnga sÄdana taggar pÄ sidan eller i nÄgot annat fall.
Vad Àr DNS. Varje server pÄ internet motsvaras av en unik IP-adress, som ser ut som 216.58.215.78. I webblÀsarens adressrad anges vanligtvis webbplatsens namn (till exempel, google.com), och DNS-servrar (Domain Name System) kopplar det till serverns IP-adress (216.58.215.78).
För att bestĂ€mma IP-adressen mĂ„ste webblĂ€saren utföra en begĂ€ran till DNS-servern. Detta tar 20â120 ms att ansluta till en ny tredje part-domĂ€n.
DNS cachelagras, om Àn inte sÀrskilt pÄlitligt. Vissa operativsystem och webblÀsare cachelagrar DNS-förfrÄgningar: detta sparar tid vid upprepade förfrÄgningar, men man kan inte lita pÄ cachelagring. I Linux fungerar det vanligtvis inte alls. Chrome har en DNS-cache, men den lever bara i en minut. Windows cachelagrar DNS-svar i fem dagar.
prerender
<link rel= "prerender"> ber webblÀsaren att ladda URL:en och visa den pÄ en osynlig flik. NÀr anvÀndaren klickar pÄ lÀnken bör sidan visas omedelbart. Detta Àr anvÀndbart om du Àr sÀker pÄ att anvÀndaren kommer att besöka en viss sida och vill snabba upp dess visning.
Trots den exceptionella effektiviteten hos denna tagg (eller pĂ„ grund av den) stödjs den dĂ„ligt av de flesta webblĂ€sare 2019. Mer information finns i. <link rel= "prerender"> ĐżĐ»ĐŸŃ
ĐŸ ĐżĐŸĐŽĐŽĐ”ŃжОĐČаДŃŃŃ ĐŸŃĐœĐŸĐČĐœŃĐŒĐž бŃаŃĐ·Đ”ŃаŃ
. ĐĐŸĐŽŃĐŸĐ±ĐœĐ”Đ” ŃĐŒ. .
Syntax
anger URL:en för vilken du vill aktivera rendering i bakgrunden. href NÀr du verkligen Àr sÀker pÄ att anvÀndaren kommer att gÄ till en viss sida
NÀr anvÀnda
ĐĐŸĐłĐŽĐ° ĐČŃ ĐŽĐ”ĐčŃŃĐČĐžŃДлŃĐœĐŸ ŃĐČĐ”ŃĐ”ĐœŃ, ŃŃĐŸ ĐżĐŸĐ»ŃĐ·ĐŸĐČаŃĐ”Đ»Ń ĐżĐ”ŃĐ”ĐčĐŽŃŃ ĐœĐ° ĐŸĐżŃДЎДлŃĐœĐœŃŃ ŃŃŃĐ°ĐœĐžŃŃ. Om du har en "tunnel" dĂ€r 70% av besökarna pĂ„ sidan A gĂ„r vidare till sidan B, sĂ„ <link rel= "prerender"> kan sidan A snabbt hjĂ€lpa till att visa sidan B.
Missbruk inte. Förhandsrendering Àr extremt kostsamt i termer av trafik och minne. AnvÀnd inte <link rel= "prerender"> för mer Àn en sida.
Detaljer
Valfri tagg. WebblÀsaren Àr inte skyldig att följa denna instruktion och kan ignorera den, till exempel vid lÄngsamma anslutningar eller om det finns otillrÀckligt med ledigt minne.
För att spara minne utför Chrome inte fullstÀndig rendering, och . Det innebÀr att Chrome laddar sidan och alla dess resurser, men gör ingen rendering och kör ingen JavaScript.
Firefox och Safari stöder överhuvudtaget inte denna tagg. Detta bryter inte mot specifikationen, eftersom webblÀsare inte Àr skyldiga att följa denna instruktion; men det Àr fortfarande trÄkigt. i Firefox har varit öppen i sju Är. Det finns rapporter om att Safari .
Sammanfattning
AnvÀnd:
<link rel="preload"> â nĂ€r du behöver resursen inom nĂ„gra sekunder<link rel= "prefetch"> â nĂ€r du behöver resursen pĂ„ nĂ€sta sida<link rel= "preconnect"> â nĂ€r du vet att du snart kommer att behöva resursen, men du vet Ă€nnu inte dess fullstĂ€ndiga URL<link rel= "dns-prefetch"> â pĂ„ samma sĂ€tt, nĂ€r du vet att du snart kommer att behöva resursen, men du vet Ă€nnu inte dess fullstĂ€ndiga URL (för Ă€ldre webblĂ€sare)<link rel= "prerender"> â nĂ€r du Ă€r sĂ€ker pĂ„ att anvĂ€ndarna kommer att gĂ„ till en viss sida och vill snabba pĂ„ dess visning
KĂ€lla: habr.com
