Atklājiet Next.js attēlu optimizācijas jaudu zibenīgi ātrām vietnēm. Uzziniet par automātisko optimizāciju, formātu atbalstu un progresīvām metodēm, lai uzlabotu vietnes veiktspēju un lietotāju pieredzi.
Next.js attēlu optimizācija: paātriniet savas vietnes veiktspēju
Mūsdienu digitālajā vidē vietnes ātrums un veiktspēja ir vissvarīgākie. Lietotāji sagaida, ka vietnes ielādēsies ātri un nodrošinās nevainojamu pieredzi. Lēni ielādējami attēli ir biežs sliktas vietnes veiktspējas iemesls, kas noved pie augstākiem atlēcienu rādītājiem un zemākas iesaistes. Next.js piedāvā jaudīgu un iebūvētu risinājumu šai problēmai: tā optimizēto Image
komponentu.
Šī visaptverošā rokasgrāmata iedziļinās Next.js attēlu optimizācijas pasaulē, sniedzot jums zināšanas un rīkus, lai ievērojami uzlabotu jūsu vietnes veiktspēju un lietotāja pieredzi. Mēs izpētīsim Image
komponenta galvenās funkcijas, apspriedīsim labākās prakses un parādīsim progresīvas metodes, lai maksimāli palielinātu jūsu attēlu optimizācijas centienus.
Kāpēc attēlu optimizācija ir svarīga
Pirms mēs iedziļināmies Next.js attēlu optimizācijas specifikā, sapratīsim, kāpēc tā ir tik būtiska:
- Uzlabota lietotāja pieredze: Ātrāki ielādes laiki nodrošina plūstošāku un patīkamāku lietotāja pieredzi, samazinot neapmierinātību un mudinot lietotājus palikt jūsu vietnē.
- Uzlabota SEO: Meklētājprogrammas, piemēram, Google, dod priekšroku vietnēm ar labu veiktspēju. Optimizēti attēli veicina ātrāku lapu ielādes laiku, kas var pozitīvi ietekmēt jūsu vietu meklētājprogrammu rezultātos.
- Samazināts atlēcienu rādītājs: Lēni ielādējama vietne var ātri atbaidīt apmeklētājus. Attēlu optimizācija palīdz samazināt atlēcienu rādītājus, noturot lietotāju iesaisti jūsu saturā.
- Zemākas joslas platuma izmaksas: Optimizēti attēli ir mazāka izmēra, samazinot joslas platumu, kas nepieciešams jūsu vietnes ielādei. Tas var radīt ievērojamus izmaksu ietaupījumus, īpaši vietnēm ar lielu apmeklētību.
- Uzlaboti Core Web Vitals: Attēlu optimizācija tieši ietekmē galvenos Core Web Vitals rādītājus, piemēram, Largest Contentful Paint (LCP) un Cumulative Layout Shift (CLS), kas ir būtiski Google ranga algoritmam.
Iepazīstinām ar Next.js Image
komponentu
Next.js Image
komponents (next/image
) ir jaudīgs standarta <img>
HTML elementa aizstājējs. Tas piedāvā virkni funkciju, kas paredzētas automātiskai attēlu optimizācijai un vietnes veiktspējas uzlabošanai. Šeit ir tā galveno priekšrocību sadalījums:
- Automātiska attēlu optimizācija: Next.js automātiski optimizē attēlus, mainot to izmēru, saspiežot un pasniedzot tos modernos formātos, piemēram, WebP un AVIF (ja tos atbalsta pārlūkprogramma).
- Slinkā ielāde: Attēli tiek ielādēti tikai tad, kad tie nonāk skatlogā, samazinot sākotnējo lapas ielādes laiku un taupot joslas platumu.
- Adaptīvie attēli:
Image
komponents var automātiski ģenerēt vairākus attēlu izmērus, lai pasniegtu optimālu attēlu dažādiem ekrāna izmēriem un ierīču izšķirtspējām. - Izkārtojuma nobīdes novēršana: Pieprasot
width
unheight
atribūtus,Image
komponents rezervē vietu attēlam pirms tā ielādes, novēršot izkārtojuma nobīdes un uzlabojot Cumulative Layout Shift (CLS) rādītāju. - Iebūvēts CDN atbalsts: Next.js nevainojami integrējas ar populāriem CDN (satura piegādes tīkliem), lai vēl vairāk paātrinātu attēlu piegādi.
Darba sākšana ar Image
komponentu
Lai izmantotu Image
komponentu, vispirms tas ir jāimportē no next/image
:
import Image from 'next/image';
Pēc tam varat aizstāt savas standarta <img>
birkas ar Image
komponentu:
<Image
src="/images/my-image.jpg"
alt="Mans attēls"
width={500}
height={300}
/>
Svarīgi: Ievērojiet width
un height
atribūtus. Tie ir obligāti Image
komponentam, lai novērstu izkārtojuma nobīdi. Pārliecinieties, ka norādāt pareizos attēla izmērus.
Piemērs: profila attēla parādīšana
Pieņemsim, ka vēlaties savā vietnē parādīt profila attēlu:
import Image from 'next/image';
function Profile() {
return (
<div>
<Image
src="/images/profile.jpg"
alt="Mans profila attēls"
width={150}
height={150}
style={{ borderRadius: '50%' }} // Neobligāti: pievienojiet stilu apaļam profila attēlam
/>
<p>Laipni lūgti manā profilā!</p>
</div>
);
}
export default Profile;
Šajā piemērā mēs attēlojam attēlu profile.jpg
ar platumu un augstumu 150 pikseļi. Mēs esam arī pievienojuši dažus neobligātus stilus, lai izveidotu apaļu profila attēlu.
Izpratne par attēlu optimizācijas stratēģijām Next.js
Next.js izmanto vairākas galvenās stratēģijas, lai automātiski optimizētu jūsu attēlus:
1. Izmēru maiņa un saspiešana
Next.js automātiski maina attēlu izmēru un saspiež tos, lai samazinātu to faila lielumu, nezaudējot vizuālo kvalitāti. Saspiešanas līmeni var konfigurēt, izmantojot quality
rekvizītu:
<Image
src="/images/my-image.jpg"
alt="Mans attēls"
width={500}
height={300}
quality={75} // Pielāgojiet saspiešanas kvalitāti (0-100, noklusējums ir 75)
/>
Eksperimentējiet ar dažādām quality
vērtībām, lai atrastu optimālo līdzsvaru starp faila lielumu un vizuālo precizitāti. Vērtība 75 parasti nodrošina labus rezultātus.
2. Modernie attēlu formāti (WebP un AVIF)
Next.js automātiski pasniedz attēlus modernos formātos, piemēram, WebP un AVIF, ja tos atbalsta lietotāja pārlūkprogramma. Šie formāti piedāvā ievērojami labāku saspiešanu nekā tradicionālie formāti, piemēram, JPEG un PNG, tādējādi nodrošinot mazākus failu izmērus un ātrāku ielādes laiku.
- WebP: Moderns attēlu formāts, ko izstrādājis Google un kas piedāvā izcilu saspiešanu un kvalitāti. To plaši atbalsta modernas pārlūkprogrammas.
- AVIF: Nākamās paaudzes attēlu formāts, kas balstīts uz AV1 video kodeku. Tas piedāvā vēl labāku saspiešanu nekā WebP un kļūst arvien plašāk atbalstīts pārlūkprogrammās.
Next.js automātiski veic formāta izvēli, nodrošinot, ka lietotāji saņem optimālo attēla formātu, pamatojoties uz viņu pārlūkprogrammas iespējām. Šai funkcijai nepieciešams, lai jūsu `next.config.js` failā būtu konfigurēts Attēlu optimizācijas API. Noklusējuma konfigurācija izmanto Next.js attēlu optimizācijas API, bet jūs to varat konfigurēt, lai izmantotu trešās puses pakalpojumu sniedzēju, piemēram, Cloudinary vai Imgix.
3. Slinkā ielāde
Slinkā ielāde ir tehnika, kas atliek attēlu ielādi, līdz tie gatavojas nonākt skatlogā. Tas samazina sākotnējo lapas ielādes laiku un taupa joslas platumu, īpaši lapām ar daudziem attēliem. Next.js Image
komponents automātiski īsteno slinko ielādi pēc noklusējuma.
Jūs varat pielāgot slinkās ielādes uzvedību, izmantojot loading
rekvizītu:
<Image
src="/images/my-image.jpg"
alt="Mans attēls"
width={500}
height={300}
loading="lazy" // Iespējot slinko ielādi (noklusējums)
// loading="eager" // Atspējot slinko ielādi (ielādēt attēlu nekavējoties)
/>
Lai gan slinkā ielāde parasti ir ieteicama, jūs varētu vēlēties to atspējot attēliem, kas ir kritiski svarīgi sākotnējai lapas ielādei, piemēram, galvenajiem attēliem (hero images) vai logotipiem.
4. Adaptīvie attēli ar sizes
rekvizītu
sizes
rekvizīts ļauj definēt dažādus attēlu izmērus dažādiem ekrāna izmēriem. Tas nodrošina, ka lietotāji saņem optimālo attēla izmēru savai ierīcei, vēl vairāk samazinot joslas platuma patēriņu un uzlabojot veiktspēju.
<Image
src="/images/my-image.jpg"
alt="Mans attēls"
width={1200} // Sākotnējais attēla platums
height={800} // Sākotnējais attēla augstums
sizes="(max-width: 768px) 100vw, (max-width: 1200px) 50vw, 33vw"
/>
Sadalīsim sizes
rekvizīta vērtību:
(max-width: 768px) 100vw
: Ekrāniem, kas mazāki par 768 pikseļiem, attēls aizņems 100% no skatloga platuma.(max-width: 1200px) 50vw
: Ekrāniem no 768 līdz 1200 pikseļiem, attēls aizņems 50% no skatloga platuma.33vw
: Ekrāniem, kas lielāki par 1200 pikseļiem, attēls aizņems 33% no skatloga platuma.
sizes
rekvizīts norāda pārlūkprogrammai, kurus attēlu izmērus lejupielādēt, pamatojoties uz ekrāna izmēru. Tas nodrošina, ka lietotāji saņem optimālo attēla izmēru savai ierīcei, samazinot joslas platuma patēriņu un uzlabojot veiktspēju. width
un height
rekvizītiem jāatspoguļo attēla sākotnējie izmēri.
Next.js attēlu optimizācijas API konfigurēšana
Next.js izmanto Attēlu optimizācijas API, lai veiktu attēlu optimizācijas uzdevumus. Pēc noklusējuma tas izmanto iebūvēto Next.js Attēlu optimizācijas API, kas ir piemērots daudziem projektiem. Tomēr sarežģītākiem lietošanas gadījumiem to var konfigurēt, lai izmantotu trešās puses pakalpojumu sniedzēju, piemēram, Cloudinary, Imgix vai Akamai.
Noklusējuma Next.js attēlu optimizācijas API izmantošana
Noklusējuma Next.js Attēlu optimizācijas API ir viegli lietojams un neprasa konfigurāciju. Tas automātiski optimizē attēlus būvēšanas procesa laikā un pasniedz tos no Next.js servera.
Trešās puses attēlu optimizācijas nodrošinātāja konfigurēšana
Lai konfigurētu trešās puses attēlu optimizācijas nodrošinātāju, jums ir jāatjaunina savs next.config.js
fails. Šeit ir piemērs, kā konfigurēt Cloudinary:
/** @type {import('next').NextConfig} */
const nextConfig = {
images: {
domains: ['res.cloudinary.com'], // Pievienojiet savu Cloudinary domēnu
},
}
module.exports = nextConfig
Šī konfigurācija norāda Next.js izmantot Cloudinary attēlu optimizācijai. Jums būs arī jāizmanto Cloudinary URL formāts, lai norādītu attēlu transformācijas, kuras vēlaties lietot. Jums būs arī jāinstalē Cloudinary SDK:
npm install cloudinary
Tagad jūsu attēli tiks optimizēti un pasniegti ar Cloudinary.
Līdzīgas konfigurācijas ir pieejamas citiem attēlu optimizācijas nodrošinātājiem, piemēram, Imgix un Akamai. Sīkākas instrukcijas meklējiet to attiecīgajā dokumentācijā.
Progresīvas attēlu optimizācijas metodes
Papildus Image
komponenta pamatfunkcijām varat izmantot vairākas progresīvas metodes, lai vēl vairāk optimizētu savus attēlus:
1. Satura piegādes tīkla (CDN) izmantošana
CDN (satura piegādes tīkls) ir serveru tīkls, kas izvietots visā pasaulē un kešatmiņā saglabā un piegādā jūsu vietnes statiskos aktīvus, tostarp attēlus. CDN izmantošana var ievērojami uzlabot vietnes veiktspēju, samazinot latentumu un pasniedzot attēlus no servera, kas atrodas tuvāk lietotājam.
Populāri CDN nodrošinātāji ietver:
- Cloudflare
- Amazon CloudFront
- Akamai
- Fastly
Lielākā daļa CDN nodrošinātāju piedāvā vieglu integrāciju ar Next.js. Varat konfigurēt savu CDN, lai tas kešatmiņā saglabātu un piegādātu jūsu attēlus, vēl vairāk paātrinot to piegādi.
2. SVG attēlu optimizēšana
SVG (Scalable Vector Graphics) attēli ir uz vektoriem balstīti attēli, kurus var mērogot, nezaudējot kvalitāti. Tos bieži izmanto logotipiem, ikonām un citai grafikai. Lai gan SVG attēli parasti ir maza izmēra, tos joprojām var optimizēt, lai gūtu papildu veiktspējas uzlabojumus.
Šeit ir daži padomi SVG attēlu optimizēšanai:
- Minimizējiet ceļu un formu skaitu: Sarežģīti SVG attēli ar daudziem ceļiem un formām var būt lielāka izmēra. Vienkāršojiet savus SVG attēlus, samazinot elementu skaitu.
- Stilēšanai izmantojiet CSS: Tā vietā, lai iegultu stilus tieši SVG kodā, izmantojiet CSS, lai stilētu savus SVG attēlus. Tas var samazināt SVG faila izmēru un uzlabot uzturamību.
- Saspiest savus SVG attēlus: Izmantojiet rīku, piemēram, SVGO (SVG Optimizer), lai saspiestu savus SVG attēlus. SVGO noņem nevajadzīgus metadatus un optimizē SVG kodu, samazinot faila izmēru.
3. Attēlu vietturi (aizmiglošanas efekts)
Attēlu vietturi var nodrošināt labāku lietotāja pieredzi, kamēr attēli ielādējas. Populāra tehnika ir "aizmiglošanas-parādīšanās" efekts, kurā kā vietturis tiek parādīta zemas izšķirtspējas, aizmiglota attēla versija, kas pēc tam pakāpeniski tiek aizstāta ar pilnas izšķirtspējas attēlu, kad tas ielādējas.
Next.js Image
komponents nodrošina iebūvētu atbalstu attēlu vietturiem, izmantojot placeholder
rekvizītu un `blurDataURL` rekvizītu, ar `blur` vērtību `placeholder` rekvizītam.
import Image from 'next/image';
import { useState, useEffect } from 'react';
function MyComponent() {
const [imageSrc, setImageSrc] = useState(null);
useEffect(() => {
async function loadImage() {
// Simulē attēla un tā blurDataURL ienesi no API
const imageData = await fetchImageData('/images/my-image.jpg'); // Aizstājiet ar savu API galapunktu
setImageSrc(imageData);
}
loadImage();
}, []);
// Izspēles funkcija, lai simulētu attēla datu ienesi (aizstājiet ar savu faktisko API izsaukumu)
async function fetchImageData(imagePath) {
// Reālā lietojumprogrammā jūs ienestu attēla datus no API.
// Šajā piemērā mēs atgriezīsim fiktīvu objektu ar blurDataURL.
// Jūs varat ģenerēt blurDataURL, izmantojot bibliotēkas, piemēram, "plaiceholder" vai "blurhash".
return {
src: imagePath,
blurDataURL: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNkYAAAAAYAAjCB0C8AAAAASUVORK5CYII=', // Aizstājiet ar savu faktisko blurDataURL
};
}
if (!imageSrc) {
return <div>Ielādē...</div>;
}
return (
<Image
src={imageSrc.src}
alt="Mans attēls"
width={500}
height={300}
placeholder="blur" // Iespējot aizmiglošanas vietturi
blurDataURL={imageSrc.blurDataURL} // Nodrošiniet blurDataURL
/>
);
}
export default MyComponent;
Šajā piemērā mēs izmantojam placeholder="blur"
rekvizītu, lai iespējotu aizmiglošanas viettura efektu. Mēs arī nodrošinām blurDataURL
rekvizītu, kas ir base64 kodēts aizmiglotā attēla attēlojums. Jūs varat ģenerēt blurDataURL
, izmantojot bibliotēkas, piemēram, plaiceholder vai blurhash. width
un height
rekvizītiem jāatspoguļo attēla sākotnējie izmēri.
Attēlu optimizācijas veiktspējas mērīšana un uzraudzība
Ir būtiski mērīt un uzraudzīt jūsu attēlu optimizācijas centienu veiktspēju, lai nodrošinātu, ka tie sniedz vēlamo ietekmi. Šeit ir daži rīki un tehnikas, ko varat izmantot:
1. Google PageSpeed Insights
Google PageSpeed Insights ir bezmaksas rīks, kas analizē jūsu vietnes veiktspēju un sniedz ieteikumus uzlabojumiem. Tas sniedz vērtīgu ieskatu jūsu vietnes ielādes laikos, ieskaitot ar attēliem saistītus rādītājus. Tas izceļ optimizācijas iespējas saistībā ar moderniem attēlu formātiem, attēlu izmēriem un slinko ielādi.
2. WebPageTest
WebPageTest ir vēl viens bezmaksas rīks, kas ļauj pārbaudīt jūsu vietnes veiktspēju no dažādām vietām un pārlūkprogrammām. Tas sniedz detalizētus veiktspējas rādītājus, tostarp ūdenskrituma diagrammas, kas parāda jūsu vietnes resursu ielādes secību.
3. Lighthouse
Lighthouse ir atvērtā koda automatizēts rīks tīmekļa lapu kvalitātes uzlabošanai. Varat to palaist Chrome DevTools vai kā Node komandrindas rīku. Lighthouse nodrošina auditus veiktspējai, pieejamībai, progresīvām tīmekļa lietotnēm, SEO un citam. Tas sniedz arī specifiskus ieteikumus attēlu optimizācijai.
4. Core Web Vitals
Core Web Vitals ir rādītāju kopums, kas mēra jūsu vietnes lietotāja pieredzi. Tie ietver:
- Largest Contentful Paint (LCP): Mēra laiku, kas nepieciešams, lai lielākais satura elements lapā kļūtu redzams.
- First Input Delay (FID): Mēra laiku, kas nepieciešams pārlūkprogrammai, lai reaģētu uz pirmo lietotāja mijiedarbību.
- Cumulative Layout Shift (CLS): Mēra negaidītu izkārtojuma nobīžu daudzumu, kas notiek lapā.
Attēlu optimizācija var ievērojami ietekmēt LCP un CLS. Optimizējot savus attēlus, jūs varat uzlabot savus Core Web Vitals rādītājus un nodrošināt labāku lietotāja pieredzi.
Biežākās kļūdas, no kurām jāizvairās
Lai gan Next.js attēlu optimizācija ir jaudīga, ir svarīgi apzināties dažas biežākās kļūdas, no kurām jāizvairās:
- Nenorādot
width
unheight
: Nenorādotwidth
unheight
atribūtus, var rasties izkārtojuma nobīdes un slikta lietotāja pieredze. - Nevajadzīgi lielu attēlu izmantošana: Vienmēr mainiet savu attēlu izmēru uz atbilstošiem izmēriem pirms to augšupielādes savā vietnē.
- Pārmērīga attēlu saspiešana: Lai gan saspiešana ir svarīga, pārmērīga attēlu saspiešana var novest pie vizuālās kvalitātes zuduma.
- Neizmantojot modernus attēlu formātus: Pārliecinieties, ka izmantojat modernus attēlu formātus, piemēram, WebP un AVIF, lai nodrošinātu labāku saspiešanu un kvalitāti.
- Ignorējot CDN integrāciju: CDN izmantošana var ievērojami uzlabot attēlu piegādes ātrumu.
Reāli Next.js attēlu optimizācijas veiksmes stāsti
Daudzi uzņēmumi ir veiksmīgi ieviesuši Next.js attēlu optimizāciju, lai uzlabotu savu vietņu veiktspēju. Šeit ir daži piemēri:
- Vercel.com: Vercel, uzņēmums, kas stāv aiz Next.js, savā vietnē plaši izmanto Next.js attēlu optimizācijas funkcijas. Viņu vietne ielādējas neticami ātri, nodrošinot plūstošu un patīkamu lietotāja pieredzi.
- TikTok: TikTok izmanto Next.js dažiem no saviem tīmekļa resursiem un izmanto attēlu optimizācijas iespējas, lai nodrošinātu ātru un saistošu pieredzi, kas ir īpaši svarīgi platformai, kas lielā mērā balstās uz lietotāju radītu vizuālo saturu.
- Hulu: Hulu izmanto Next.js daļām no savas tīmekļa lietojumprogrammas un gūst labumu no veiktspējas uzlabojumiem, ko nodrošina optimizēta attēlu piegāde, veicinot nevainojamu straumēšanas pieredzi.
Šie piemēri demonstrē ievērojamo ietekmi, kādu Next.js attēlu optimizācija var atstāt uz vietnes veiktspēju un lietotāja pieredzi.
Secinājums
Next.js attēlu optimizācija ir jaudīgs rīks, kas var ievērojami uzlabot jūsu vietnes veiktspēju un lietotāja pieredzi. Izmantojot Image
komponentu, izprotot attēlu optimizācijas stratēģijas un izvairoties no biežākajām kļūdām, jūs varat izveidot zibenīgi ātras vietnes, kas piesaista lietotājus un veicina konversijas.
Atcerieties mērīt un uzraudzīt savu attēlu optimizācijas veiktspēju, izmantojot tādus rīkus kā Google PageSpeed Insights un WebPageTest. Nepārtraukti optimizējot savus attēlus, jūs varat nodrošināt, ka jūsu vietne sniedz vislabāko iespējamo pieredzi saviem lietotājiem.
Aptveriet Next.js attēlu optimizācijas spēku un atraisiet pilnu savas vietnes potenciālu!