Gå direkte til indholdet

Cookieindstillinger

Vælg for hver type, hvilke cookies du tillader. Du kan altid ændre dit valg via Cookieindstillinger nederst på hver side. Privatlivspolitik

Nødvendige

Altid slået til

Nødvendige for at logge ind, gemme din kurv og huske dine valg. De er altid slået til.

Hvilke cookies?
  • weboke_sessie, weboke_klant, weboke_remember: din session og at forblive logget ind
  • weboke_basket: din kurv
  • wkBtwIncl: vise priser med eller uden moms
  • wok_cookies: dit cookievalg, 12 måneder

Måler, hvilken annonce der fører til et besøg eller en bestilling, så vi ikke betaler for annoncer, der ikke virker.

Hvilke cookies?
  • Google Ads via Google Tag Manager (_gcl_au, _gcl_aw), op til 90 dage
  • OpenAI Ads, annoncer i ChatGPT
  • wok_aff: hvilken partner der henviste dig til os (affiliateprogram), 60 dage

4,6

Land og sprog

Hvert land har sin egen side med landets priser og moms.

Se

Under motorhjelmen: webserver, PHP og database

Modul 1: Sådan virker WordPress · Læsetid: 8 minutter

Læringsmål: Efter denne lektion kan du trin for trin forklare, hvordan en sideforespørgsel til WordPress bliver til en HTML-side, og hvor en cache afkorter den vej.

Nøglebegreber: webserver (LiteSpeed, Apache, nginx), PHP, MariaDB/MySQL, query, index.php, skabelonhierarki, dynamisk vs. statisk, TTFB

En statisk og en dynamisk side

På et statisk websted ligger hver side som en færdig fil på serveren. Webserveren henter filen og sender den afsted. Det er hurtigt og enkelt, men enhver ændring betyder en ny fil.

WordPress er dynamisk: siden findes først i det øjeblik, nogen beder om den. Der findes ingen fil contact.html. Der er en tekst i databasen, et tema med skabeloner og en bunke PHP-kode, der samler de to dele. Det giver bekvemmelighed (du retter teksten i din browser), men det koster beregning ved hvert besøg. Forstår du det regnearbejde, forstår du senere også, hvorfor et websted er langsomt, hvorfor caching gør så stor en forskel, og hvorfor en PHP-opgradering kan gå galt.

Rejsen for en sideforespørgsel

Forestil dig, at en besøgende åbner https://example.com/contact/. Dette sker:

  1. DNS: browseren slår IP-adressen op for example.com (se DNS-kurset). Den opretter en sikker forbindelse til den adresse.
  2. Webserver: på serveren kører en webserver, for eksempel LiteSpeed, Apache eller nginx. Den modtager forespørgslen. Findes der en rigtig fil eller mappe med det navn (et billede, et stylesheet), sender den det direkte. Hvis ikke, gælder reglen fra .htaccess (hos LiteSpeed og Apache) eller fra nginx-konfigurationen: "giv alt, der ikke findes, til index.php".
  3. PHP: index.php er en PHP-fil. Webserveren lader den køre af PHP, det programmeringssprog WordPress er skrevet i. PHP indlæser først wp-config.php (indstillingerne, med databaseoplysningerne), derefter resten af WordPress, så alle aktive plugins og det aktive tema.
  4. Database: WordPress undersøger, hvilket indhold der hører til /contact/, og stiller databasen (MariaDB eller MySQL) spørgsmål: hvilken side har slug'en contact, hvad er webstedets indstillinger, hvilken menu hører til? Et sådant spørgsmål kaldes en query. En enkel side koster hurtigt snesevis af queries; med plugins kan det blive hundredvis.
  5. Tema: WordPress vælger, hvilken skabelon fra temaet der formaterer siden. Det sker efter skabelonhierarkiet: for en side med slug'en contact leder WordPress først efter en skabelon page-contact, derefter page-<id> (sidens nummer), så page, derefter singular og til sidst index. Den første, der findes, vinder.
  6. HTML tilbage: resultatet er en HTML-side, som PHP giver til webserveren, og webserveren giver videre til browseren.
  7. Browseren læser HTML'en og henter derefter stylesheets, scripts, skrifttyper og billeder. Det er almindelige filer, så de kommer direkte fra webserveren (eller fra en cache).

Mellem trin 2 og trin 6 ligger den tid, serveren bruger på at danne siden. Det ser du som TTFB (time to first byte): tiden mellem forespørgslen og den første byte af svaret. På et velindrettet websted ligger den godt under et sekund. I modul 6 måler du det selv.

Hvorfor hver plugin tæller

I trin 3 indlæses alle aktive plugins, ved hver forespørgsel. Også selvom pluginnen ikke gør noget på denne side. En plugin til et fotogalleri indlæses altså også, når nogen åbner din kontaktside. Hver plugin kan lave ekstra queries, indlæse ekstra kode og tilføje ekstra scripts til siden.

Det forklarer to ting, du oftere støder på i dette kursus:

  • Færre plugins er normalt hurtigere. Ikke fordi antallet i sig selv betyder noget, men fordi hver plugin kan udføre arbejde ved hver forespørgsel.
  • Én defekt plugin kan lukke hele websted ned. Går noget galt i trin 3 (for eksempel en plugin, der ikke virker med den nye PHP-version), når PHP aldrig frem til trin 6. Den besøgende får en hvid side eller meddelelsen "Der er opstået en kritisk fejl på dette websted" (lektion 5.4).

Hvor PHP og databasen kommer fra

PHP og databasen kører på din hostingudbyders server. Du vælger normalt selv PHP-versionen i kontrolpanelet (hos DirectAdmin hedder det Select PHP version, se lektion 8.4). Databasen oprettes under installationen; installationsprogrammet gør det ofte for dig (lektion 2.2).

Et par ting at huske:

  • PHP-version: hver ny PHP-version er hurtigere og mere sikker, men gammel kode kan gå i stykker på den. wordpress.org anbefaler i øjeblikket PHP 8.3 eller nyere (status november 2026).
  • Database: wordpress.org anbefaler MariaDB 10.11 eller nyere, eller MySQL 8.0 eller nyere. MariaDB er en afgrening af MySQL; for WordPress gør det ingen forskel.
  • Databasen ligger som regel på samme server (DB_HOST er så localhost). Ved større hosting kan den ligge på en separat server.

Cache: at afkorte vejen

Hvis hundrede besøgende efterspørger den samme kontaktside, danner WordPress den hundrede gange uden cache. Hver gang de samme queries, samme skabelon, samme HTML. En sidecache gemmer HTML'en efter første gang. Den næste besøgende får den gemte version: trin 3 til og med 6 falder væk.

Zonder cache:  browser > webserver > PHP > WordPress + plugins > database > thema > HTML
Met cache:     browser > webserver > opgeslagen HTML

Det er derfor, caching giver den største hastighedsgevinst (lektion 6.2). Det forklarer også en hyppig forvirring: "jeg har rettet teksten, men ser stadig den gamle version." Så får du en gemt version; efter at have ryddet cachen ser du den nye.

Ikke alt må komme fra en cache. En logget ind administrator, en indkøbskurv eller en kassesidee er forskellig for hver besøgende. En god cacheplugin springer disse over.

Headere: hvad serveren fortæller dig

Hvert svar fra en webserver starter med headere, før HTML'en. Dem ser du ikke på siden, men du kan se dem i din browsers udviklerværktøjer (F12, fanen Netværk, klik på den første forespørgsel). Et eksempel:

HTTP/2 200
server: LiteSpeed
content-type: text/html; charset=UTF-8
link: <https://example.com/wp-json/>; rel="https://api.w.org/"
x-litespeed-cache: hit
  • server fortæller, hvilken webserver der svarer.
  • link med wp-json afslører, at det er WordPress.
  • x-litespeed-cache: hit betyder, at denne side kom fra LiteSpeed-cachen. Andre caches bruger andre navne, som x-cache: HIT eller cf-cache-status: HIT hos Cloudflare.

Du behøver ikke kunne disse regler udenad. Men den, der kan læse dem, kan selv finde mange problemer.

Opsummering

  • WordPress danner hver side i det øjeblik, forespørgslen kommer: webserver, PHP, plugins, database, tema, HTML.
  • Ved hver forespørgsel indlæses alle aktive plugins; én defekt plugin kan stoppe hele webstedet.
  • Skabelonhierarkiet bestemmer, hvilken skabelon fra temaet der formaterer en side.
  • En sidecache springer regnearbejdet over ved at give en gemt HTML. Indloggede brugere og indkøbskurve hører ikke hjemme i den cache.
  • Headerne i et svar fortæller, hvilken webserver der svarer, og om siden kom fra en cache.

Quiz

1. Hvem kører WordPress' PHP-kode?



2. Et websted med 40 plugins er langsomt, også på sider hvor de plugins ikke gør noget synligt. Hvad er den bedste forklaring?



3. Hvor kommer et stylesheet som /wp-content/themes/thema/style.css normalt fra?



4. Du ser i headerne x-litespeed-cache: hit. Hvad betyder det?



5. Hvilken skabelon bruger WordPress til en side med slug'en contact, hvis temaet kun har page og index?



Opgave

Opgave A1.2: Læs dit websteds headere. Åbn dit eget websted (eller wordpress.org) med din browsers udviklerværktøjer (F12, fanen Netværk, genindlæs siden, klik på den første forespørgsel). Udfyld, hvilken webserver der står i headeren server (eller "ingen", hvis den ikke er der), og om der er en header, der siger, at siden kom fra en cache (hvilket navn og hvilken værdi). Programmet henter den samme side og sammenligner.

Opgave A1.2: Læs dit websteds headere




Det, du udfylder, og hvad vi finder, gemmer vi ikke. Din browser husker dine svar, og om du har bestået opgaven. Er du logget ind, gemmer vi kun, at du (næsten) bestod opgaven, i Mine kurser; der kan du også slette det.

Læs mere

Disse artikler beskriver trinnene i WebOkés kontrolpaneler; i andre kontrolpaneler fungerer det på lignende vis.

Et øjeblik…

Opsæt dine domæner

Angiv for hvert domæne navneserverne, tilknytningen til din hosting, og hvem der bliver ejer.

Indlæser dine domæner…