Suomi

Kattava opas kuvien ja komponenttien laiskaan lataukseen, joka parantaa verkkosivuston suorituskykyä ja käyttäjäkokemusta maailmanlaajuiselle yleisölle.

Laisha lataus: Verkkosivuston suorituskyvyn optimointi kuvilla ja komponenteilla

Nykypäivän digitaalisessa maailmassa verkkosivuston suorituskyky on ensiarvoisen tärkeää. Käyttäjät odottavat nopeita, reagoivia kokemuksia, ja hakukoneet priorisoivat sivustoja, jotka täyttävät nämä odotukset. Yksi keskeinen tekniikka suorituskyvyn parantamiseksi on laiska lataus. Tämä artikkeli tarjoaa kattavan oppaan kuvien ja komponenttien laiskaan lataukseen ja auttaa sinua optimoimaan verkkosivustosi maailmanlaajuiselle yleisölle.

Mitä on laiska lataus?

Laiska lataus on tekniikka, joka lykkää resurssien (kuvat, iframe-kehykset, komponentit jne.) lataamista, kunnes niitä todella tarvitaan – tyypillisesti, kun ne ovat tulossa näkymäalueelle. Tämä tarkoittaa, että sen sijaan, että kaikki resurssit ladattaisiin heti alussa, selain lataa vain ne resurssit, jotka ovat näkyvissä käyttäjälle sivun ensimmäisellä latauksella. Kun käyttäjä selaa sivua alaspäin, lisää resursseja ladataan, kun ne tulevat näkyviin.

Ajattele sitä näin: kuvittele pakkaavasi matkaa varten. Sen sijaan, että raahaisit koko vaatekaappisi mukanasi alusta alkaen, pakkaat vain ne vaatteet, joita tiedät tarvitsevasi heti. Matkan edetessä purat lisää tavaroita sitä mukaa, kun tarvitset niitä. Pohjimmiltaan näin laiska lataus toimii verkkosivustoilla.

Miksi käyttää laiskaa latausta?

Laiska lataus tarjoaa useita merkittäviä etuja:

Kuvien laiska lataus

Kuvat ovat usein verkkosivuston suurimpia resursseja, mikä tekee niistä erinomaisia ehdokkaita laiskaan lataukseen. Näin toteutat kuvien laiskan latauksen:

Natiivi laiska lataus

Nykyaikaiset selaimet (Chrome, Firefox, Safari ja Edge) tukevat nyt natiivia laiskaa latausta käyttämällä loading-attribuuttia. Tämä on yksinkertaisin ja tehokkain tapa ladata kuvia laiskasti.

Ottaaksesi natiivin laiskan latauksen käyttöön, lisää vain loading="lazy"-attribuutti <img>-tagiisi:

<img src="image.jpg" alt="Oma kuvani" loading="lazy">

loading-attribuutilla voi olla kolme arvoa:

Esimerkki:

<img src="london_bridge.jpg" alt="Lontoon silta" loading="lazy" width="600" height="400">
<img src="tokyo_skyline.jpg" alt="Tokion horisontti" loading="lazy" width="600" height="400">
<img src="rio_de_janeiro.jpg" alt="Rio de Janeiro" loading="lazy" width="600" height="400">

Tässä esimerkissä kuvat Lontoon sillasta, Tokion horisontista ja Rio de Janeirosta latautuvat vasta, kun käyttäjä selaa niiden kohdalle. Tämä on erittäin hyödyllistä, varsinkin jos käyttäjä ei selaa sivun alareunaan asti.

Laiska lataus JavaScriptillä

Vanhemmille selaimille, jotka eivät tue natiivia laiskaa latausta, voit käyttää JavaScript-kirjastoja tai kirjoittaa oman komentosarjasi. Tässä on perusesimerkki käyttäen Intersection Observer API:a:

const images = document.querySelectorAll('img[data-src]');

const observer = new IntersectionObserver((entries, observer) => {
  entries.forEach(entry => {
    if (entry.isIntersecting) {
      const img = entry.target;
      img.src = img.dataset.src;
      img.removeAttribute('data-src');
      observer.unobserve(img);
    }
  });
});

images.forEach(img => {
  observer.observe(img);
});

Selitys:

  1. Valitsemme kaikki <img>-elementit, joilla on data-src-attribuutti.
  2. Luomme uuden IntersectionObserver-instanssin. Takaisinkutsufunktio suoritetaan, kun havaittu elementti tulee näkymäalueelle tai poistuu siitä.
  3. Takaisinkutsufunktion sisällä käymme läpi entries-kohteet (elementit, jotka ovat leikanneet näkymäalueen kanssa).
  4. Jos elementti leikkaa näkymäalueen (entry.isIntersecting on tosi), asetamme kuvan src-attribuutiksi data-src-attribuutin arvon.
  5. Sitten poistamme data-src-attribuutin ja lopetamme kuvan tarkkailun, koska sitä ei enää tarvita.
  6. Lopuksi tarkkailemme jokaista kuvaa käyttämällä observer.observe(img).

HTML-rakenne:

<img data-src="image.jpg" alt="Oma kuvani">

Huomaa, että kuvan todellinen URL-osoite on sijoitettu data-src-attribuuttiin src-attribuutin sijaan. Tämä estää selainta lataamasta kuvaa välittömästi.

Laiskan latauksen kirjastojen käyttäminen

Useat JavaScript-kirjastot voivat yksinkertaistaa kuvien laiskaa lataamista. Joitakin suosittuja vaihtoehtoja ovat:

Nämä kirjastot tarjoavat tyypillisesti yksinkertaisen API:n laiskan latauksen alustamiseen ja tarjoavat lisäominaisuuksia, kuten paikkamerkkikuvia ja siirtymätehosteita.

Komponenttien laiska lataus

Laiska lataus ei ole tarkoitettu vain kuville; sitä voidaan soveltaa myös komponentteihin, erityisesti moderneissa JavaScript-kehyksissä, kuten React, Angular ja Vue. Tämä on erityisen hyödyllistä suurissa yhden sivun sovelluksissa (SPA), joissa on monia komponentteja.

Laiska lataus Reactissa

React tarjoaa sisäänrakennetun React.lazy()-funktion komponenttien laiskaan lataukseen. Tämän funktion avulla voit dynaamisesti tuoda komponentteja, jotka ladataan vasta, kun ne renderöidään.

import React, { Suspense } from 'react';

const MyComponent = React.lazy(() => import('./MyComponent'));

function App() {
  return (
    <Suspense fallback={<div>Ladataan...</div>}>
      <MyComponent />
    </Suspense>
  );
}

export default App;

Selitys:

  1. Käytämme React.lazy()-funktiota tuodaksemme MyComponent-komponentin dynaamisesti. import()-funktio palauttaa lupauksen (promise), joka ratkeaa komponenttimoduuliksi.
  2. Käärimme MyComponent-komponentin <Suspense>-komponenttiin. Suspense-komponentin avulla voit näyttää varakäyttöliittymän (tässä tapauksessa "Ladataan...") sillä aikaa, kun komponenttia ladataan.

Laiska lataus Angularissa

Angular tukee moduulien laiskaa latausta käyttämällä loadChildren-ominaisuutta reitityksen asetuksissa.

const routes: Routes = [
  {
    path: 'my-module',
    loadChildren: () => import('./my-module/my-module.module').then(m => m.MyModuleModule)
  }
];

Selitys:

  1. Määritämme reitin my-module-polulle.
  2. Käytämme loadChildren-ominaisuutta määrittääksemme, että MyModuleModule ladataan laiskasti. import()-funktio tuo moduulin dynaamisesti.
  3. then()-metodia käytetään pääsemään käsiksi moduuliin ja palauttamaan MyModuleModule-luokka.

Laiska lataus Vue.js:ssä

Vue.js tukee komponenttien laiskaa latausta dynaamisten tuontien ja component-tagin avulla.

<template>
  <component :is="dynamicComponent"></component>
</template>

<script>
export default {
  data() {
    return {
      dynamicComponent: null
    }
  },
  mounted() {
    import('./MyComponent.vue')
      .then(module => {
        this.dynamicComponent = module.default
      })
  }
}
</script>

Selitys:

  1. Käytämme <component>-tagia :is-attribuutin kanssa renderöidäksemme komponentin dynaamisesti.
  2. mounted-elinkaarikoukussa käytämme import()-funktiota tuodaksemme MyComponent.vue-komponentin dynaamisesti.
  3. Asetamme sitten dynamicComponent-dataominaisuuden moduulin oletusvienniksi.

Laiskan latauksen parhaat käytännöt

Varmistaaksesi, että laiska lataus on toteutettu tehokkaasti, harkitse näitä parhaita käytäntöjä:

Kansainvälistämiseen liittyviä huomioita

Kun toteutat laiskaa latausta maailmanlaajuiselle yleisölle, ota huomioon nämä kansainvälistämistekijät:

Yhteenveto

Laiska lataus on tehokas tekniikka verkkosivuston suorituskyvyn optimointiin ja käyttäjäkokemuksen parantamiseen. Lykkäämällä näkymäalueen ulkopuolisten resurssien lataamista voit lyhentää sivun alkuperäistä latausaikaa, vähentää kaistanleveyden kulutusta ja pienentää palvelimen kuormitusta. Rakennatpa sitten pientä henkilökohtaista verkkosivustoa tai suurta yrityssovellusta, laiskan latauksen tulisi olla keskeinen osa suorituskyvyn optimointistrategiaasi. Noudattamalla tässä artikkelissa esitettyjä parhaita käytäntöjä ja ottamalla huomioon kansainvälistämistekijät voit varmistaa, että laiskan latauksen toteutuksesi on tehokas ja tarjoaa positiivisen käyttäjäkokemuksen maailmanlaajuiselle yleisölle.

Ota laiska lataus käyttöösi ja avaa nopeampi, tehokkaampi ja käyttäjäystävällisempi verkkokokemus kaikille.

Laisha lataus: Verkkosivuston suorituskyvyn optimointi kuvilla ja komponenteilla | MLOG