Spring til indhold
Hastighed

Cache er et must, men kan være svært at forstå

Nicolai
6. januar 2022 · Læsetid 7 min.

Cache - hvad i alverden er det? Faktisk er det en af grundstene til at sikre høj ydeevne og hurtige sideindlæsninger til dine besøgende - i hvert fald, hvis samtlige andre performance-parametre, der påvirker hastigheden, er optimeret til det yderste af fingerspidserne. Cache er ‘next step’, i kampen om dine konkurrenters utålmodige kunder. Med en effektiv cache-strategi, vil du vinde kampen - både kampen i morgen, men også finalen op til Black Friday. Ubetinget.

Hvad er cache?  

Det er egentlig et godt spørgsmål. Men i og med, at verden er i krisetider, og meget få ting er gratis, synes jeg at vi skal lave en aftale. Jeg forklarer dig kompleksiteten, og nødvendigheden for anvendelse af cache, på allerbedste, og mest pædagogiske vis - mens du lover mig, at læse artiklen til ende, så dit website i fremtiden, kan bidrage til statistikken, “Antallet af WordPress-sites med høj, kompromisløs indlæsningsevne, stiger fortsat på verdensplan! ”. Deal?

Jeg håber at du har spændt selen, for cache er det vi betegner som værende et ‘hurtigt’ emne.

Forestil dig, at vi befinder os i dit klædeskab. Klædeskabet er proppet med tøj til diverse anledninger, som du har samlet over de sidste mange år. Du ønsker ikke at skille dig af med noget af det, selvom det kræver meget plads - argumentet for at beholde det er, at du bruger al tøjet, men noget i mere grad end andet. Derfor vælger du, at placere de trøjer du bruger mest, øverst i tøjstakken, samt hænger dine hverdagsskjorter yderst - simpelthen for at optimere besparelsen af tid, så du ikke skal nederst i stakken, eller ind blandt de bagerste bøjler, hver gang du skal bruge de ting du ofte bruger.

Faktisk er det sådan cache fungere - i grove træk, selvfølgelig.

Caching gør, at data som ofte bruges, midlertidig gemmes i nærheden, så den ikke ligger så langt væk, når der kommer nye anmodninger til sitet.

Når en besøgende rammer sitet, kigger din webserver på, om der ligger en statisk udgave af sitet. Gør der ikke det, bliver din applikation (WordPress), sat i gang med at hente indholdet i databasen, som så efterfølgende serverer det tilbage til browseren. Din server gemmer derefter indholdet i cache til næste gang en besøgende rammer siden, så den ikke skal tilbage til databasen og hente indholdet.

Caching er så fantastisk et værktøj, fordi det sparer din server for at udføre ekstra arbejde, og kan dermed håndtere mere trafik end ellers. Det betyder faktisk, at du kan reducere dine eksisterende hosting ressourcer, når dit website anvender cache.

Forstå essensen af cache og dets funktioner

Server Side-cache, Objektcache og Browser-cache. Det er de 3 cache-teknikker, som du bør kende, og vide hvordan du skal håndtere. Et absolut must for en effektiv og lynhurtig oplevelse for besøgende på et WordPress-site i vore dage.

Server Side-cache?

Server Side-caching er en cache-teknik, som sørger for at lagre hele HTML’en på én side, så senere sidevisninger kan generes uden at WordPress behøver at anmode om på ny.

Hver gang dit website modtager én ny besøgende, skal WordPress håndtere et stort antal PHP-filer, som efterfølgende anmoder MySQL-databasen et udefinerbart antal gange. Opdaterer du eksempelvis sjældent mange af dine sider, vil denne handling være et spild af serverens ressourcer. I stedet, skal siden blot indlæses én gang som HTML, hvorefter den lagres til fremtidige besøgende på siden - hvilket er det, som Server Side-cachen gør.

Alle vores webservere bruger NGINX FastCGI cache. Det er den ubetinget bedste side-caching til WordPress-sites. Hvorfor? Tja, årsagen er sådan set temmelig simpel. Med FastCGI-cache kan dit website nu udføre ovenstående eksempel, med håndteringen af anmodninger i backenden, direkte på serverniveau.

Det vil sige, at din webserver (NGINX), alene kan håndtere det gemte indhold i  cachen, uden at skulle forespørge WordPress eller PHP fra databasen.

Selvom dette er den absolut mest optimale måde, at håndtere sin cache på - så er det langt fra en metode, der anvendes af størstedelen af aktuelle, live WordPress-sites. Desværre.

Rigtig mange vælger ofte den nemme løsning, som er at installere et caching-plugin i WordPress. Men hvorfor er det en mindre god idé at håndtere sin cache på denne måde? Jo ser du - vælger du at gå i en blød bue uden om caching direkte på serverniveau, og i stedet blot installerer et plugin i CMS’et, skal hver eneste anmodning generes af PHP på selve applikationen. Effekten vil dog stadig være at finde, men vil også kræve mere hukommelse samt flere CPU-kerner - hvilket i sidste ende, bliver en dyrere fremgangsmåde - og væsentlig mindre optimal i praksis. Simpelthen fordi, dit website bruger ressourcer, som egentlig slet ikke er nødvendige at gøre brug af.

NGINX FastCGI-caching er fuldstændig ideel for hurtigere indlæsning af statiske filer, men for dynamiske PHP-filer, på eksempelvis e-handelsplatforme med integrationer, eller abonnementsbaseret websites, vil side-caching ikke fungere.

Objectcache?

Hver eneste gang dit website bliver bedt om at åbne en side i WordPress, vil det medføre et minimum af forespørgsler på 27 i MySQL-databasen. 27 er standard antallet, så har dit WordPress-site mange plugins, eller et ressourcetungt tema, vil antallet af forespørgsler i databasen være noget højere. Ofte mere end 100 forespørgsler.

Forespørgsler til MySQL-databasen er temmeligt ressourcekrævende - det er her objektcache kommer ind i billedet. Der findes flere forskellige typer af objektcache, men lad os tage udgangspunkt i open source in-memory databasen Redis Object Cache.

WordPress har siden 2005 haft sin egen objektcache integreret direkte i CMS’et. Desværre gemmes den lagrede data i cachen kun, i den tid som anmodningen til databasen varer. Redis object cache er nemlig det man kalder for “persistent”-cache. Den sørger for at servere forskellige data på tværs af sessioner.

Ved at bruge Redis Object Cache, vil din database udsættes for færre forespørgsler, da tidligere forespørgsler er lagret i din Redis-cache. Samtidig vil du, og ikke mindst dine besøgende opleve, at siderne indlæses noget hurtigere.

Objekt caching kan du ikke komme uden om, hvis du er indehaver af et forretningskritisk WordPress-site, som ynder at tilbyde kompromisløs ydeevne og indlæsningsoplevelse for rigtig mange besøgende i fremtiden.

Hvad er Browser-cache?

Browser-cache er den mest basale cache-metode, til at reducere indlæsningstiden og forbedre den samlede ydeevne. Browser-cache er kort fortalt, når besøgendes browsere gemmer statiske kopier af siderne på dit websted. Derefter, ved efterfølgende besøg, vil dette indhold indlæses hurtigere, idet browseren ikke skal kontakte dit websteds server for at få adgang til bestemte ressourcer.

Hver cachelagret ressource har brug for en specifik udløbsperiode. Dette fortæller den enkelte browser, når indholdet på dit websted er blevet forældet. Herefter kan det erstatte sin cachelagrede kopi med den senest, opdaterede version.

Det kan være en rigtig god idé, at have cache på flere niveauer. Browser-cache er klart den hurtigste af cache-teknikkerne, da anmodningen sker direkte i den besøgendes browser. Samtidig har hårde browser-caches tendens til, ikke at være invaliderende nok. Foretages der mange ændringer på sitet, vil nogle Browser-caches have problemer med at indlæse dem i tilstrækkelig grad. Derfor anbefaler vi altid, at kombinere Browser-cache med Server Site-cache og Object-cache.

Hos WP Drift™ har vi en effektiv cache-strategi, så dine ressourcer anvendes på bedste vis, mens dine sider serveres hurtigere end dine konkurrenters.

 

Vil du høre mere om, hvordan vi håndterer cache?

Udfyld formularen, og vi kontakter dig snarest muligt.

Vi giver dig et indblik i, hvordan vi håndterer cache for nogle af DK's ældste brands.

Denne formular er beskyttet med Google reCaptcha