Har du bemærket, at din WordPress-hjemmeside bliver langsommere, jo mere indhold du tilføjer? Hvis du har haft siden længe og har tilføjet/fjernet plugins eller skiftet tema, kan der ligge en masse død data i databasen — især i wp_options.

Autoload henter valgte options ved hver request. Er autoload sat til “yes”/true for for meget data, stiger hukommelsesbrug og TTFB. I nyere WordPress er autoload-API’et blevet mere eksplicit, men gamle plugins efterlader stadig oppustede autoload-rækker.

Når autoload er slået til, læser WordPress de rækker ind i hukommelsen på hver sidevisning. Ét plugin kan lægge flere rækker. Mange plugins bliver til en mærkbar ventetid, før siden overhovedet begynder at bygge HTML.

Hvorfor er det et problem?

Hvorfor det kan give mening for et plugin eller tema at sætte autoload=true, afhænger af, hvor ofte og hvornår dataen i wp_options-tabellen bliver brugt. Hvis dataen er nødvendig for at udføre en vigtig funktion, der ofte bruges på din hjemmeside, kan det give mening at autoloade den for at undgå forsinkelser i datahentningen.

For eksempel kan et plugin til e-handel have brug for at gemme information om produkter, kategorier, priser og andre oplysninger i wp_options-tabellen for at kunne vise dem på din hjemmeside. Hvis autoload-attributten er sat til “false”, kan det føre til en langsom sideindlæsning, når en besøgende søger efter et produkt eller kategori, da dataen først skal indlæses i hukommelsen. I dette tilfælde kan det give mening at sætte autoload=true for de nødvendige data.

I de fleste tilfælde er der tale om en programmør, der ikke er klar over, at autoload=true kan skabe problemer. Dette skyldes ofte en kombination af begrænset viden om databaser og mangel på opmærksomhed på optimering af ydeevnen i deres WordPress-kode.

Standard funktionalitet i WordPress når man bruger add_option() eller update_option() er at sætte autoload til true. Dette skyldes, at WordPress antager, at de fleste options vil blive brugt regelmæssigt og derfor bør indlæses automatisk for at forbedre ydeevnen. Men hvis programmøren ikke specifikt fortæller WordPress, at en værdi ikke skal autoloades, så kan dette skabe et problem.

Hvordan kan jeg identificere autoload options

Når du vil identificere, hvilke data der autoloades fra wp_options-tabellen, kan du bruge et plugin som Query Monitor eller New Relic. Disse plugins giver dig mulighed for at analysere alle databaseforespørgsler og identificere, hvilke data der autoloades og hvor meget hukommelse de fylder.

Her er et eksempel på en SQL-query, der henter data fra wp_options-tabellen og beregner, hvor meget data der autoloades:

SELECT COUNT(*) AS `total_autoload_options`, SUM(LENGTH(`option_value`)) AS `total_autoload_size_bytes`,
ROUND(SUM(LENGTH(`option_value`))/1024, 2) AS `total_autoload_size_kb`,
ROUND(SUM(LENGTH(`option_value`))/(1024*1024), 2) AS `total_autoload_size_mb`
FROM `wp_options`
WHERE `autoload` = 'yes';

Denne query tæller antallet af rækker i wp_options-tabellen, hvor autoload-attributten er sat til “yes” og beregner også størrelsen på disse rækker i bytes, kilobytes og megabytes.

Når du kører denne query, vil du få et resultat, der viser antallet af autoloadede options, størrelsen på disse options i bytes, kilobytes og megabytes.

Dette kan hjælpe dig med at identificere, hvor meget plads dine autoloadede data optager i din database og dermed beslutte, hvilke data der skal fjernes eller optimeres for at forbedre din WordPress-hjemmesides hastighed og ydeevne.

Her er et eksempel hvor der kun indlæses 0.5mb, og det kan betragtes som en god størrelse. Der er ikke nogen fast regel, men alt over 1mb bør der kigges på med det samme.

Show size in mb for autoloaded options

I det næste eksempel indlæses der 1.5mb hver gang.

Showing autoloaded options size

Bemærk også i de to eksempler at det er stort set det samme antal options der indlæses, men der er en markant forskel i hvor meget data der indlæses rent faktisk fylder.

Her er nogle eksempler på kendte options med autoload=true, der fylder meget, samt plugins, der er kendt for at være tunge:

  • WPML (WordPress Multilingual Plugin): Dette plugin er kendt for at være meget tungt og kan medføre en betydelig belastning af din WordPress-database. WPML autoloadede options fylder typisk meget i wp_options-tabellen.
  • WooCommerce: Som en af de mest populære e-handelsløsninger til WordPress, autoloadede options fylder også meget i wp_options-tabellen, hvilket kan resultere i langsom sideindlæsning og nedsat ydeevne, især hvis der er mange produkter og kategorier.
  • Yoast SEO: Yoast SEO-pluginnet er et af de mest populære SEO-plugins til WordPress. Men det autoloadede options fylder også meget i wp_options-tabellen og kan medføre forsinkelser i sideindlæsning, især hvis der er mange indlæg og sider.
  • NextGEN Gallery: NextGEN Gallery-pluginnet er en populær løsning til at oprette og administrere fotogallerier på din WordPress-hjemmeside. Men de autoloadede options fylder også meget i wp_options-tabellen og kan påvirke sidehastigheden.
  • Revolution Slider: Revolution Slider-pluginnet er en populær løsning til at oprette bannere og diasshow på din WordPress-hjemmeside. Men de autoloadede options fylder også meget i wp_options-tabellen og kan påvirke sidehastigheden.

Det er vigtigt at huske på, at selvom disse plugins kan være tunge, kan de stadig bruges på din WordPress-hjemmeside, hvis de er konfigureret korrekt og optimeret til ydeevne.

Autoloaded data kan være noget der kræver en oprydning på din hjemmeside, og kan være en stor hjælp til at forbedre hastigheden og det er noget som et cache plugin ikke kan afhjælpe.

Advanced Database Cleaner til WordPress

Meow Apps’s Advanced Database Cleaner er et WordPress-plugin, der hjælper med at rense din WordPress-database for unødvendige data, hvilket kan forbedre hastigheden og ydeevnen på din hjemmeside.

Pluginnet giver dig mulighed for at slette forskellige typer data fra din database, inklusive autoloadede options, revisions, spam-kommentarer og trashed-indlæg. Det giver også mulighed for at slette data fra andre tredjeparts-plugins og temaer, som du ikke længere bruger.

Der er en gratis version af pluginnet du kan prøve af, men det er et godt plugin. Den lave pris er både værd for de ekstra features du får, men du støtter også udvikleren.

Advanced Database Cleaner har en intuitiv brugergrænseflade, der gør det nemt at vælge de data, du vil slette, og giver dig også mulighed for at tage backup af din database, før du sletter noget.

Database Cleaner fra Meow Apps

Når du har identificeret de autoloadede data, kan du begynde at optimere ved at ændre autoload-attributten til “false” for de data, der ikke er nødvendige at indlæse på hver sideindlæsning. Dette kan gøres manuelt ved at redigere wp_options-tabellen direkte eller ved hjælp af et plugin som WP Optimize eller WP-CLI.

At sætte autoload til no sletter ikke data. WordPress henter værdien med et separat kald, den gang et plugin eller temaet faktisk spørger efter den. Det ekstra kald er billigt, sammenlignet med at slæbe en stor blob med på hver eneste side.

Brug det på options, der kun betyder noget ét sted: en indstilling til én skabelon, en cache en side aldrig læser. Lad de små værdier, hele sitet bruger på hver request, blive autoload.

Er der nogen måde at automatisere oprydning af WordPress Options-tabellen?

Ja, der er forskellige måder at automatisere oprydning af WordPress Options-tabellen på. En af de mest almindelige metoder er at bruge plugins, der kan hjælpe med at rydde op i tabellen på en regelmæssig basis.

Et af de mest populære plugins til dette formål er WP-Optimize. Dette plugin fungerer ikke kun som en databaseoptimeringsløsning, men det kan også slette gamle revisions, spam kommentarer og post revisions, der ligger i din database. Derudover kan det også rydde op i wp_options tabellen.

Når du har installeret og aktiveret WP-Optimize, kan du nemt rydde op i wp_options tabellen ved at vælge “Options” i plugin menuen og klikke på “Clean Options”. Herefter vil pluginnet scanne din WordPress installation efter for ubrugte eller forældede options og give dig mulighed for at slette dem.

En anden mulighed er at bruge et andet plugin kaldet Advanced Database Cleaner. Dette plugin giver dig mere kontrol over de tabeller, der ryddes op i, og giver dig mulighed for at vælge specifikke tabeller eller indholdstyper, der skal renses. Du kan også planlægge en regelmæssig oprydning af tabellerne ved hjælp af pluginets tidsplanfunktion. Det er en simpel indstilling du kan slå til i et ganske brugervenligt interface.

Som alt andet, er alt arbejde med MySQL noget du skal være påpasselig med, og hvis du ikke føler dig hjemme eller er usikker kan du let komme til at lave ulykker. Sørg for at have taget en backup.

Ved at reducere autoload-dataene på din WordPress-hjemmeside, vil du kunne forbedre sideindlæsningstiden, reducere serverbelastningen og skabe en bedre brugeroplevelse for dine besøgende.

Er oprydning kun én del af et større hastighedsproblem? Se WordPress hastighedsoptimering for en samlet audit.