← Nyttig
22. oktober 20267 min lesetid
Nyheter

Stopp nettsiden før den blir treg: Innfør ytelsesbudsjett per sidetype

Et ytelsesbudsjett gjør hastighet til et konkret krav i utvikling og publisering. Slik setter dere grenser for bilder, kode, serverarbeid og Core Web Vitals.

Kategori: Nettsideytelse

Nettsider blir sjelden trege på grunn av én stor feil. Ofte skjer det gradvis: et nytt sporingsverktøy, større bilder, enda en skrifttype, en tyngre innholdsblokk og flere databasekall. Hver endring virker forsvarlig alene, men summen gir dårligere ytelse.

Et ytelsesbudsjett setter grenser før dette blir et problem. Budsjettet beskriver hvor mye en sidetype kan belaste nettleseren, serveren og brukeren. Det kan for eksempel angi maksimal bildestørrelse, mengde JavaScript, responstid fra serveren og akseptable verdier for Core Web Vitals.

Ytelsesbudsjettet gir teamet konkrete grenser å arbeide etter.
Ytelsesbudsjettet gir teamet konkrete grenser å arbeide etter.

Poenget er ikke å gjøre alle sider ekstremt lette. Poenget er å prioritere bevisst og oppdage forverringer før de når produksjon.

Lag budsjett per sidetype, ikke for hele nettstedet

En forside, produktside og artikkelside har ulike oppgaver. Ett felles krav for hele nettstedet blir derfor enten for strengt eller for romslig. Lag heller et lite sett med budsjetter for sidetypene som har størst betydning for virksomheten.

En nettbutikk kan starte med disse:

  • Forside
  • Kategoriside
  • Produktside
  • Handlekurv og utsjekk
  • Artikkel eller veiledning

For et tjenestenettsted kan tjenestesider, kontaktside og landingssider være viktigere. Velg representative sider med reelt innhold. En tom testside sier lite om hvordan sidemalen fungerer når redaksjonen har lagt inn bilder, skjemaer og relaterte artikler.

Kombiner brukeropplevelse og tekniske grenser

Et godt ytelsesbudsjett trenger ikke bestå av mange målepunkter. Det bør dekke de viktigste delene av leveransen og være enkelt nok til å brukes i praksis.

Faste bildeformater gjør god ytelse enklere i redaksjonelt arbeid.
Faste bildeformater gjør god ytelse enklere i redaksjonelt arbeid.

Core Web Vitals

Core Web Vitals beskriver sentrale deler av brukeropplevelsen: hvor raskt hovedinnholdet vises, hvor stabilt oppsettet er, og hvor raskt siden reagerer når brukeren gjør noe.

Følg særlig med på:

  • Largest Contentful Paint: Når det største synlige innholdselementet, ofte et hovedbilde eller en overskriftseksjon, blir vist.
  • Interaction to Next Paint: Hvor raskt siden gir visuell respons etter klikk, trykk eller tastaturbruk.
  • Cumulative Layout Shift: Hvor mye innholdet flytter seg uventet mens siden lastes.

Bruk anbefalte terskler som et utgangspunkt, men mål også egne, kritiske handlinger. På en produktside kan det være tiden fra brukeren trykker på en variant til pris og tilgjengelighet oppdateres. I utsjekken kan det være responsen etter at kunden velger leveringsmåte.

Vekt og antall forespørsler

Suppler brukerorienterte målinger med grenser for hva siden laster ned. Det kan være maksimal samlet overføringsstørrelse, bildemengde, JavaScript og CSS. Antall nettverksforespørsler kan også være nyttig, særlig når siden henter ressurser fra mange eksterne tjenester.

Disse grensene forklarer ikke hele brukeropplevelsen, men de gjør årsakene lettere å finne. Hvis JavaScript-budsjettet overskrides etter at et nytt analyseverktøy er lagt inn, vet teamet hvor undersøkelsen bør starte.

Målinger bør dekke både nettleseren, serveren og databasen.
Målinger bør dekke både nettleseren, serveren og databasen.

Server og database

Frontenden kan være godt optimalisert og likevel vente lenge på serveren. Sett derfor et krav til hvor raskt serveren skal begynne å levere innhold, både med varm cache og uten cache.

Måling uten cache er viktig på sider som er personlige, ofte endres eller ikke kan mellomlagres fullt ut. Her kan databasearbeid, integrasjoner og beregninger bli den egentlige flaskehalsen.

Fordel budsjettet på de viktigste kostnadene

Når en sidetype overskrider budsjettet, må teamet kunne finne ut hvem eller hva som har brukt plassen. Del derfor budsjettet inn i noen praktiske kategorier.

Bilder

Bilder er ofte den største datamengden på innholdstunge sider. Kravene bør omfatte mer enn filformat. Angi også riktige dimensjoner, komprimering og hvilke bilder som skal lastes først.

Hovedbildet bør være tilpasset plassen det faktisk bruker. Mindre viktige bilder lenger nede kan lastes når de nærmer seg synsfeltet. Nettleseren bør få vite bildets bredde og høyde på forhånd, slik at innholdet ikke hopper mens filen lastes.

Lag faste bildevarianter i publiseringsløsningen. Redaktøren bør ikke måtte beregne riktige pikseldimensjoner eller filstørrelser hver gang. Ytelse blir mer robust når gode valg er innebygd i arbeidsflyten.

JavaScript og CSS

JavaScript koster både nedlasting og prosessering. En liten fil kan fortsatt skape problemer dersom den binder opp nettleseren lenge. Vurder derfor om funksjonen må være tilgjengelig umiddelbart, kan lastes senere eller kan løses uten omfattende skripting.

Del kode etter behov, og unngå at alle sider mottar funksjoner som bare brukes ett sted. En artikkelside trenger normalt ikke kode for produktfiltrering, kart eller avanserte skjemaer dersom funksjonene ikke finnes der.

CSS bør følge samme prinsipp. Prioriter stilene som er nødvendige for første visning, og fjern regler som ikke lenger brukes. Pass samtidig på at optimaliseringen ikke skaper et kort øyeblikk med ustilet eller feilplassert innhold.

Eksterne tjenester

Samtykkeløsninger, analyse, annonsering, chat, video og personalisering kan utgjøre en betydelig del av belastningen. Disse tjenestene må inngå i budsjettet, selv om koden leveres av en tredjepart.

Be hver tjeneste begrunne kostnaden. Må chatten lastes før brukeren har vist interesse for kontakt? Trenger alle markedsføringsskript å kjøre på kvitteringssiden? Kan videoen vises med et lett forhåndsbilde frem til brukeren velger å spille den av?

Databasearbeid

Databasebudsjettet kan inneholde krav til spørringstid, antall tunge spørringer og total behandlingstid for sentrale sidetyper. Se spesielt etter søk, filtrering, relaterte produkter og dynamiske innholdsblokker som gjør mye arbeid for hver visning.

Caching kan redusere belastningen, men bør ikke skjule ineffektive spørringer. Når cachen utløper eller tømmes, kommer kostnaden tilbake. Optimaliser derfor grunnarbeidet før dere øker cachetiden.

Test både cachetreff og cachebom

Caching gir stor effekt når samme innhold etterspørres flere ganger. Det kan skje i nettleseren, nær brukeren, på webserveren eller i applikasjonen. Et ytelsesbudsjett bør beskrive forventet resultat både når innholdet finnes i cache, og når systemet må bygge responsen på nytt.

Hvis dere bare tester varme cachesider, kan resultatet se stabilt ut helt til en publisering, utrulling eller trafikkøkning tømmer deler av cachen. Test derfor følgende situasjoner:

  • Første besøk fra en ny bruker
  • Gjentatt besøk med ressurser i nettlesercache
  • Sidevisning etter tømming av servercache
  • Innlogget bruker eller handlekurv med personlig innhold
  • Sidevisning mens en ekstern integrasjon svarer sakte

Dette avdekker om ytelsen skyldes god arkitektur eller bare gunstige testforhold.

Ta med opplevd hastighet i vurderingen

En side kan holde seg innenfor det tekniske budsjettet og fortsatt oppleves uklar eller treg. Brukeren trenger tidlig bekreftelse på at siden virker.

Vis derfor viktig innhold først. Reserver plass til bilder og dynamiske elementer. Gi umiddelbar visuell respons på knapper, og bruk tydelige lastetilstander når en operasjon faktisk tar tid. Ikke blokker hele siden dersom bare én innholdsseksjon oppdateres.

På en filtrerbar produktside kan valget markeres med en gang, mens resultatlisten viser at den oppdateres. I et skjema bør knappen endre tilstand etter innsending, slik at brukeren ikke trykker flere ganger. Slike grep reduserer usikkerhet uten å late som behandlingen er ferdig.

Gjør budsjettet til en del av leveranseprosessen

Et regneark som kontrolleres én gang i året, stopper ikke ytelsesforverringer. Budsjettet må brukes når teamet utvikler, publiserer og kjøper nye tjenester.

  1. Etabler en referanse: Mål representative sider med realistisk innhold, på mobil og datamaskin.
  2. Sett grenser: Velg noen få krav for Core Web Vitals, bilder, kode, serverrespons og database.
  3. Test før lansering: Sammenlign nye versjoner med referansen før endringer publiseres.
  4. Varsle ved forverring: Et mindre avvik kan gi varsel, mens et alvorlig avvik bør stoppe utrullingen.
  5. Følg reelle brukere: Laboratorietester er repeterbare, men må suppleres med data fra faktiske besøk og enheter.
  6. Plasser ansvar: Avklar hvem som vurderer avvik og hvem som kan godkjenne et større budsjett.

Ikke krev at enhver overskridelse skal løses ved å fjerne funksjonen. Noen funksjoner er verdt kostnaden. Da bør beslutningen være eksplisitt: Hvilken forretningsverdi gir funksjonen, hvor merkes belastningen, og hva kan forenkles et annet sted?

Start med ett konkret budsjett

Begynn med sidetypen som har størst betydning for salg, henvendelser eller selvbetjening. Mål dagens situasjon, identifiser den største kostnaden og sett grenser som er ambisiøse, men realistiske.

Et ytelsesbudsjett virker best som en avtale mellom design, utvikling, innhold og marked. Det gjør konsekvensene av nye valg synlige. Når noen ønsker en større video, et nytt sporingsverktøy eller en mer avansert komponent, kan teamet vurdere nytten opp mot et kjent budsjett i stedet for å oppdage tregheten etter lansering.