Optimalisering av webytelse og Lighthouse · leksjon

Forbedre målinger av brukerinteraksjon

Implementer strategier for å redusere inndataforsinkelse og eliminere uventede layoutforskyvninger for en bedre brukeropplevelse.

Leksjon 3 av 412 trinn

Forbedre målinger av brukerinteraksjon er en gratis leksjon i Optimalisering av webytelse og Lighthouse på CoddyKit. Dette er leksjon 3 av 4. Du kan lese hele leksjonen gratis nedenfor – og deretter øve praktisk i nettleseren med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i Optimalisering av webytelse og Lighthouse, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Optimalisering av webytelse og Lighthouse inneholder totalt 4 leksjoner.

Forbedre brukerinteraksjonen

En jevn brukeropplevelse holder besøkende engasjert. I denne leksjonen ser vi nærmere på praktiske strategier for å redusere inputforsinkelser og eliminere forstyrrende layoutforskyvninger. Disse forbedringene påvirker Core Web Vitals direkte, noe som gir mer fornøyde brukere og bedre SEO.

Hva forårsaker inputforsinkelse?

Inputforsinkelse, som ofte måles med First Input Delay (FID), oppstår når nettleserens hovedtråd er for opptatt til å svare umiddelbart på brukerinteraksjoner som klikk eller tastetrykk. Langvarige JavaScript-oppgaver er en viktig årsak, fordi de blokkerer hovedtråden fra å behandle hendelser.

  • Opptatt hovedtråd: Nettleserens enkelttråd som håndterer gjengivelse, parsing av HTML/CSS og kjøring av JavaScript.
  • Langvarige oppgaver: JavaScript-operasjoner som tar mer enn 50 ms, og som fører til merkbare forsinkelser i responsen.

Minimer JavaScripts påvirkning

For å holde hovedtråden ledig og responsiv bør du minimere mengden JavaScript som må kjøres med en gang. Strategier som code splitting og lazy loading av ikke-kritiske moduler kan redusere den første innlastingen og behandlingstiden betydelig.

  • Code splitting: Å dele JavaScript opp i mindre bunter som kan lastes inn ved behov.
  • Lazy loading: Å bare laste inn JavaScript når det faktisk trengs, for eksempel ved en bestemt brukerinteraksjon eller når et element kommer inn i visningsområdet.

Lazy loading med dynamisk import

Dette HTML- og JavaScript-utdraget viser hvordan du laster inn en modul dynamisk. Meldingen vises først etter at knappen er klikket, noe som simulerer en lazy-lastet komponent som ikke blokkerer den første gjengivelsen av siden.

<!DOCTYPE html>
<html>
<head>
  <title>Lazy Load Demo</title>
</head>
<body>
  <button id="lazyButton">Load Message</button>
  <p id="messageArea"></p>

  <script>
    document.getElementById('lazyButton').addEventListener('click', async () => {
      document.getElementById('messageArea').textContent = 'Loading...';
      // In a real app, this would be 'await import("./myModule.js")'
      const module = await new Promise(resolve => {
        setTimeout(() => {
          // Simulate a module export
          resolve({
            getMessage: () => 'Hello from a lazy-loaded module!'
          });
        }, 500); // Simulate network delay
      });
      document.getElementById('messageArea').textContent = module.getMessage();
    });
  </script>
</body>
</html>

Debouncing og throttling av input

For hendelser som utløses ofte (for eksempel skriving i et søkefelt eller rulling) er debouncing og throttling avgjørende. De begrenser hvor ofte en funksjon kjøres, slik at unødvendig arbeid unngås og hovedtråden holdes ledig for andre oppgaver.

  • Debouncing: Utsetter kjøringen til det har gått en periode uten aktivitet. Nyttig for søkeforslag eller validering av skjemaer.
  • Throttling: Begrenser kjøringen til en maksimal frekvens over tid. Nyttig for hendelser ved endring av størrelse eller rulling.

Eksempel på debounce-funksjon

Dette HTML- og JavaScript-eksempelet viser en enkel debounce-funksjon. Funksjonen handleSearch logger bare inputverdien etter 500 ms uten flere tastetrykk, slik at antallet kjøringer reduseres.

<!DOCTYPE html>
<html>
<head>
  <title>Debounce Demo</title>
</head>
<body>
  <input type="text" id="searchBox" placeholder="Type to search...">
  <p>Search Query: <span id="output"></span></p>

  <script>
    function debounce(func, delay) {
      let timeout;
      return function(...args) {
        const context = this;
        clearTimeout(timeout);
        timeout = setTimeout(() => func.apply(context, args), delay);
      };
    }

    const searchInput = document.getElementById('searchBox');
    const output = document.getElementById('output');

    const handleSearch = debounce((event) => {
      output.textContent = event.target.value;
      console.log('Searching for:', event.target.value);
    }, 500); // Wait 500ms after last keypress

    searchInput.addEventListener('keyup', handleSearch);
  </script>
</body>
</html>

Forhindre layoutforskyvninger (CLS)

Cumulative Layout Shift (CLS) måler uventet visuell ustabilitet. Det oppstår når elementer på en side flytter på seg etter den første gjengivelsen, ofte fordi innhold lastes inn asynkront eller elementer endrer størrelse. Dette kan være svært frustrerende for brukerne, fordi de kan miste plasseringen sin eller klikke på elementer de ikke mente å klikke på.

  • Uventet bevegelse: Innhold som forskyves uten at brukeren har satt det i gang, for eksempel når et bilde lastes inn og skyver teksten nedover.
  • Vanlige årsaker: Bilder, annonser, iframer, dynamisk satt inn innhold og webfonter som lastes inn sent.

Fiks forskyvninger fra bilder og annonser

Bilder og annonser er hyppige årsaker til layoutforskyvninger. Angi alltid eksplisitte attributter for width og height for bilder og videoelementer. For dynamisk innhold som annonser eller innebygd innhold bør du sette av plass med CSS (for eksempel min-height eller aspect-ratio) for å forhindre forskyvninger når innholdet lastes inn.

  • Bilder/videoer: Bruk attributtene width og height direkte i HTML.
  • Dynamisk innhold: Definer plass på forhånd med CSS ved å bruke egenskaper som min-height eller den moderne aspect-ratio.

Fiks bildedimensjoner

Dette HTML-utdraget viser hvordan du kan forhindre layoutforskyvninger forårsaket av bilder. Når du oppgir width og height, kan nettleseren sette av plass før bildet lastes inn. CSS-egenskapen aspect-ratio er også en moderne og fleksibel måte å oppnå dette på.

<!DOCTYPE html>
<html>
<head>
  <title>Image CLS Fix</title>
  <style>
    .container {
      width: 200px; /* Constrain parent width */
      border: 1px solid #ccc;
      padding: 10px;
      margin-bottom: 20px;
    }
    .my-image {
      /* Modern approach: calculate aspect ratio from desired dimensions */
      aspect-ratio: 16 / 9;
      width: 100%; /* Make image fill container */
      height: auto; /* Allow height to adjust based on aspect-ratio */
      display: block; /* Remove extra space below image */
      background-color: #eee; /* Placeholder for loading */
    }
  </style>
</head>
<body>
  <h3>Without dimensions (will shift)</h3>
  <div class="container">
    <img src="https://via.placeholder.com/600x400/FF0000/FFFFFF?text=Image+1" alt="Placeholder">
    <p>Some text below the image.</p>
  </div>

  <h3>With dimensions & aspect-ratio (no shift)</h3>
  <div class="container">
    <img src="https://via.placeholder.com/600x400/0000FF/FFFFFF?text=Image+2"
         width="600" height="400" class="my-image" alt="Placeholder">
    <p>Some text below the image.</p>
  </div>
</body>
</html>

Forhindre CLS fra webfonter

Webfonter kan føre til layoutforskyvninger når de lastes ned og erstatter reservefonter. Bruk CSS-egenskapen font-display for å styre denne oppførselen. Verdier som swap eller optional kan bidra til å begrense den visuelle påvirkningen av fontinnlastingen.

  • font-display: swap;: Viser reserveteksten umiddelbart og bytter deretter til webfonten når den er lastet inn. Dette forhindrer et usynlig tekstglimt.
  • font-display: optional;: Bruker reservefonten hvis webfonten ikke blir tilgjengelig raskt, slik at et bytte og en eventuell forskyvning unngås helt.
  • Forhåndslast fonter: Bruk <link rel="preload"> for kritiske fonter, slik at de blir tilgjengelige tidligere.

Test kunnskapene dine

Tenk deg en nettside med et søkefelt som sender en API-forespørsel ved hvert tastetrykk. Hvilken teknikk vil best redusere unødvendige forespørsler og forbedre responsen?

Oppsummering: Jevn brukeropplevelse

Godt jobbet! Du har lært effektive strategier for å forbedre måleverdier for brukerinteraksjon:

  • Reduser inputforsinkelse ved å minimere JavaScript på hovedtråden med code splitting og lazy loading.
  • Kontroller hyppige hendelser ved hjelp av debouncing og throttling.
  • Forhindre layoutforskyvninger (CLS) ved å angi bildedimensjoner, sette av plass til dynamisk innhold og optimalisere innlasting av webfonter med font-display.

Bruk disse teknikkene for å skape en virkelig jevn og behagelig opplevelse for brukerne dine!

Gratis å komme i gang

Lær deg Optimalisering av webytelse og Lighthouse med en AI-veileder – gratis

Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.

Kurs
12
Leksjoner
48

Ofte stilte spørsmål

Er leksjonen «Forbedre målinger av brukerinteraksjon» gratis?

Ja – hele teksten i «Forbedre målinger av brukerinteraksjon» er gratis å lese her på nettet. For å øve interaktivt med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt, og for å låse opp resten av Optimalisering av webytelse og Lighthouse-kurset, kan du oppgradere til CoddyKit PRO. Kurset i Optimalisering av webytelse og Lighthouse inneholder totalt 4 leksjoner.

Hva lærer jeg i «Forbedre målinger av brukerinteraksjon»?

Implementer strategier for å redusere inndataforsinkelse og eliminere uventede layoutforskyvninger for en bedre brukeropplevelse. Du øver på Optimalisering av webytelse og Lighthouse med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.

Trenger jeg erfaring for å begynne med Optimalisering av webytelse og Lighthouse?

Ingen tidligere erfaring er nødvendig. Optimalisering av webytelse og Lighthouse på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 3 av 4.

Hvor lang tid tar leksjonen «Forbedre målinger av brukerinteraksjon»?

De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.

Kan jeg skrive og kjøre kode i denne Optimalisering av webytelse og Lighthouse-leksjonen?

Ja. Alle Optimalisering av webytelse og Lighthouse-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.

Alle leksjonene i dette kurset

  1. Introduksjon til Core Web Vitals
  2. Grundig gjennomgang av LCP, FID og CLS
  3. Forbedre målinger av brukerinteraksjon
  4. Interaction to Next Paint (INP)
← Tilbake til Optimalisering av webytelse og Lighthouse