Gå til innholdet

Cookie-innstillinger

Velg hvilke typer cookies du tillater. Du kan når som helst endre valget via Cookie-innstillinger nederst på hver side. Personvernerklæring

Nødvendige

Alltid på

Trengs for å logge inn, beholde handlekurven og huske valgene dine. Disse er alltid på.

Hvilke cookies?
  • weboke_sessie, weboke_klant, weboke_remember: økten din og at du forblir innlogget
  • weboke_basket: handlekurven din
  • wkBtwIncl: visning av priser med eller uten mva.
  • wok_cookies: cookievalget ditt, 12 måneder

Måler hvilken annonse som fører til et besøk eller en bestilling, slik at vi ikke betaler for annonser som ikke gir noe.

Hvilke cookies?
  • Google Ads via Google Tag Manager (_gcl_au, _gcl_aw), opptil 90 dager
  • OpenAI Ads, annonser i ChatGPT
  • wok_aff: hvilken partner som henviste deg til oss (partnerprogram), 60 dager

4,6

Land og språk

Hvert land har sin egen nettside, med priser og mva. for det landet.

Vis

Caching

Modul 6: Hastighet · Lesetid: 9 minutter

Læringsmål: Etter denne leksjonen kan du forklare hvilke typer cache som finnes, og sette opp og kontrollere en sidemellomlager riktig.

Nøkkelbegreper: sidemellomlager, nettlesermellomlager, Cache-Control, objektcache, Redis, OPcache, CDN, cacheutvidelse, LiteSpeed Cache, unntak (innlogget, handlekurv, kasse), tømme cache, doble cacheutvidelser

Cache: unngå å gjøre samme jobb to ganger

En cache lagrer resultatet av et arbeid, slik at det ikke må gjøres på nytt neste gang. På et WordPress-nettsted finnes det fire steder dette skjer, fra størst til minst effekt:

TypeHva lagresHvorEffekt
SidemellomlagerDen komplette HTML-en til en sidePå serveren (eller hos et CDN)Den største gevinsten: PHP, utvidelser og database blir hoppet over
NettlesermellomlagerStilark, skript, bilder, skrifttyperI nettleseren til besøkendeEn andre side laster raskere, fordi filene allerede finnes der
ObjektcacheResultater av databasespørringerI minnet til serveren (Redis, Memcached)Hjelper der en sidemellomlager ikke kan, som for innloggede brukere og nettbutikker
OPcacheDen oversatte PHP-kodenI minnet til PHPPHP trenger ikke lese filer på nytt for hver forespørsel; er som regel påslått som standard hos de fleste webhotell

Sidemellomlageret

Leksjon 1.2 viste det: uten cache lager WordPress hele siden på nytt ved hvert besøk. Med en sidemellomlager lager den første besøkende den, og de neste får den lagrede HTML-en. En TTFB på ett sekund kan dermed bli noen hundredels sekund, og pakken din kan håndtere langt flere besøkende samtidig.

Hvordan du får en sidemellomlager, avhenger av webserveren din:

  • LiteSpeed (mange delte webhotell, deriblant WebOké): webserveren har sin egen cache. Den gratis utvidelsen LiteSpeed Cache styrer den fra WordPress: hvilke sider som får ligge i cachen, og når de skal tømmes. Fordi cachen ligger i webserveren, startes PHP ikke i det hele tatt for en lagret side.
  • Apache eller nginx: en cacheutvidelse som lagrer HTML-en som filer, som WP Super Cache, W3 Total Cache eller en betalt utvidelse som WP Rocket. Eller en cache som webhotellet styrer på servernivå.
  • Administrert WordPress-hosting har ofte sin egen cache; da installerer du som regel ikke en cacheutvidelse.

Velg én. To cacheutvidelser samtidig (for eksempel LiteSpeed Cache og WP Rocket) kommer i veien for hverandre: dobbelt arbeid, sider som ikke blir tømt, merkelige feil. På en LiteSpeed-server jobber LiteSpeed Cache sammen med cachen i webserveren; en annen cacheutvidelse kan ikke gjøre det.

Hva som ikke skal ligge i cachen

En sidemellomlager gir alle samme HTML. Det går galt for sider som er forskjellige for hver besøkende:

  • innloggede brukere (administrasjonslinjen, «Velkommen, Lisa»);
  • handlekurven, kassen og Min konto i en nettbutikk;
  • sider med et skjema med en engangskode (nonce), som utløper etter en stund;
  • sider som viser noe annet basert på lokasjon, språk eller en informasjonskapsel.

Gode cacheutvidelser hopper automatisk over innloggede brukere og de kjente WooCommerce-sidene. For andre utvidelser (et medlemsområde, et bookingsystem) må du selv sette opp unntak. Tegnet på at noe går galt: en besøkende ser handlekurven til en annen, eller et skjema gir «utløpt» eller «ugyldig forespørsel».

Tømme: når er cachen utdatert?

Endrer du en side, må den lagrede versjonen bort. Cacheutvidelser tømmer som regel den siden, forsiden og arkivene når et innlegg lagres. Ved en endring i menyen, temaet eller en widget må ofte hele cachen tømmes. Ser du den gamle versjonen etter en endring, tøm da cachen (i administrasjonslinjen til cacheutvidelsen) og kontroller det i et privat vindu, slik at din egen nettlesermellomlager ikke spiller inn.

Nettlesermellomlageret

Serveren forteller nettleseren med headere hvor lenge den kan lagre en fil:

cache-control: public, max-age=31536000

Dette betyr: lagre dette i ett år. For stilark, skript, skrifttyper og bilder er en lang periode helt fint, fordi WordPress setter en annen ?ver= bak adressen ved en ny versjon, slik at nettleseren oppfatter den som en ny fil. For selve HTML-en er en kort periode (eller ingen) vanlig, slik at besøkende raskt ser endringer.

Mange webhotell og cacheutvidelser ordner dette automatisk. I oppgaven til denne leksjonen kontrollerer du det.

Objektcache og Redis

En sidemellomlager hjelper ikke for innloggede brukere og ikke for handlekurven. Der hjelper en objektcache: WordPress lagrer resultatet av databasespørringer i minnet, i et program som Redis eller Memcached. Neste gang samme spørring kommer, henter WordPress svaret fra minnet i stedet for fra databasen.

Dette er spesielt nyttig for nettbutikker, medlemsnettsteder og nettsteder med mange innloggede redaktører. For et vanlig informasjonsnettsted med en sidemellomlager er forskjellen liten. En objektcache krever at webhotellet ditt tilbyr Redis eller Memcached; deretter slår du det på med en utvidelse (LiteSpeed Cache kan gjøre dette, det finnes også egne utvidelser).

Et CDN

Et CDN (content delivery network) er et nettverk av servere på mange steder i verden som lagrer kopier av filene dine (og noen ganger hele sidene dine). En besøkende får dem fra den nærmeste serveren. Dette hjelper spesielt for besøkende langt unna og ved mye trafikk. For et europeisk nettsted med europeiske besøkende på en europeisk server er gevinsten liten. Et CDN med proxy (som Cloudflare) endrer også DNS-en din og sertifikatet ditt (DNS-kurs leksjon 7.5); ikke gjør dette uten å forstå hva det innebærer.

I praksis: slik ser det ut i et kontrollpanel

Som eksempel bruker vi LiteSpeed Cache på en LiteSpeed-server. Andre cacheutvidelser har tilsvarende innstillinger under andre navn.

  1. Installer og aktiver LiteSpeed Cache under Utvidelser > Ny utvidelse.
  2. Åpne LiteSpeed Cache > Cache: «Aktiver cache» er påslått, «Cache innloggede brukere» er avslått (med mindre du vet hva du gjør).
  3. For en nettbutikk: kontroller under Ekskluder at handlekurv, kasse og Min konto står der (for WooCommerce skjer dette automatisk).
  4. La de andre delene (optimalisering av CSS og JavaScript, bilder) stå avslått først. Slå dem på én etter én og test etter hvert steg: det er nettopp disse delene som av og til ødelegger et tema.
  5. Kontroller i et privat vindu med utviklerverktøyene (F12, Nettverk, første forespørsel): ved andre gangs lasting skal det stå x-litespeed-cache: hit.

Oppsummering

  • Det finnes fire typer cache: side (den største gevinsten), nettleser, objekt og OPcache.
  • På en LiteSpeed-server styrer LiteSpeed Cache cachen i webserveren; på Apache eller nginx bruker du en annen cacheutvidelse. Velg én.
  • Innloggede brukere, handlekurv, kasse og personlige sider hører ikke hjemme i sidemellomlageret.
  • Tøm cachen etter endringer i meny eller tema, og kontroller i et privat vindu.
  • En objektcache (Redis) hjelper for nettbutikker og innloggede brukere; et CDN hjelper spesielt ved lang avstand og mye trafikk.

Quiz

1. Hvilken cache gir som regel den største hastighetsgevinsten for et vanlig informasjonsnettsted?



2. En kunde ser produktene til en annen person i handlekurven sin. Hva er sannsynligvis galt?



3. Hvorfor bør du ikke installere to cacheutvidelser samtidig?



4. Hvem har mest nytte av en objektcache som Redis?



Oppgave

Oppgave A6.2: Fungerer sidecachen din? Fyll inn adressen til nettstedet ditt. Programmet henter forsiden to ganger kort etter hverandre, uten informasjonskapsler, og ser ved andre forsøk etter headere som viser et cachetreff (x-litespeed-cache: hit, x-cache: HIT, cf-cache-status: HIT, en age større enn 0, eller headeren til en annen kjent cache). Deretter henter det ett stilark fra forsiden og kontrollerer om nettleseren kan lagre det i minst sju dager (cache-control: max-age eller expires). Noter hvilken cache du bruker.

Oppgave A6.2: Fungerer sidecachen din?



Det du fyller inn, og det vi finner, lagrer vi ikke. Nettleseren din husker svarene dine og om du har bestått oppgaven. Er du logget inn, lagrer vi kun at du har (nesten) bestått oppgaven i Mine kurs; der kan du også slette det.

Les mer

Disse artiklene beskriver stegene i kontrollpanelene til WebOké; i andre kontrollpaneler fungerer de på tilsvarende måte.

Et øyeblikk …

Sett opp domenene dine

Ordne for hvert domene navnetjenerne, koblingen til hostingen din og hvem som blir innehaver.

Laster inn domenene dine…