Ryd op i din WordPress-database – og få et hurtigere WordPress site
Har du haft dit site i noget tid og er det ekspanderet med tiden? Så er det frem med kosten og i gang med at rydde op på dit site, for jo større og/eller ældre dit site bliver, jo mere er der at rydde op i. Og her er det især wp_options, der vil have godt af en oprydning. For det er her, du kan gøre en forskel for dit sites load-tid og performance.
Vi vil i denne artikel tage dig igennem, hvad wp_options er, og hvad du kan gøre for at optimere databasen – kort sagt en god gammeldags oprydning.
Hvad er wp_options tabellen?
Du finder wp_options i din phpMyAdmin. Under databaser gå klikker du ind på wp_options.
Din wp_options database gemmer en hel masse data om dit site fra information om email, kategori, tidsformat osv. Endvidere indeholder den også indstillinger for dine plugins, temaer, widgets og midlertidigt lagrede data.
I tabellen ser du 4 felter: option_id, option_name, option_value og autoload. Det er især den sidste, der er interessant at kigge på. Dette fortæller om filen bliver loadet på hver enkel side af dit site eller ej. Og jo flere filer, der skal loades, jo længere tid tager det. Alle filer vil fra start af være sat til ”yes” fra udviklernes side, men det er slet ikke sikkert, at alt skal loades på alle sider af dit site.
Det kan være lidt svært at sige, hvor meget, der er for meget autoadet data, men hvis du begynder at ramme 3-5 MB eller mere, så er der plads til optimering. Og hvis din autoloadede data ligger på over 10MB, så bør du handle med det samme. Dette i sig selv kan dog ikke løse alle problemerne på i wp_options-databasen, men det er et godt sted at starte.
Autoload giver overload
Data bliver ofte autoloadet af et plugin, selvom det egentlig ikke burde. Fx skal kontaktformularer næppe loades på alle sider, men kun de sider, der er relevante. Derfor skal denne være slået fra.
Et andet godt eksempel på ting, der autoloades er temaer, som du måske endda har slettet, men som bliver ved med at ligge i systemet. De fleste temaer og plugins har indstillinger, som du kan slå til, så når du sletter et tema/plugin, så bliver dens wp_options automatisk også slettet, så vær opmærksom på det, inden du sletter et tema/plugin.
Nogle plugin/tema-udviklere loader data ind i wp_options-databasen i stedet for at bruge deres egen. For nogle udviklere foretrækker plugins, der ikke tilføjer ekstra databaser, men selve wp_options er ikke designet til at rumme mange tusinde rækker.
Dan dig et overblik over rengøringen
For at kunne løse dine problemer, er du først nødt til at kende problemets omfang. En god måde at gøre dette på er ved at danne dig et overblik over, hvad der bliver autoloadet på dit site. For at finde ud af det, så gå ind på phpMyAdmin og klik ind på din database i venstre side og klik ind på SQL, hvor du skriver følgende:
SELECT SUM(LENGTH(option_value)) as autoload_size FROM wp_options WHERE autoload='yes';
Vær opmærksom på, at koden kan se anderledes ud, hvis du ikke burger wp_.
Mængden af autoloadede filer bliver angivet i bytes. Der er 1024 bytes i en KB og 1024 KB i en MB. Hvis mængden fylder mindre end 1 MB, så er der ikke noget at være bekymret for.
Hvis du ønsker mere information om dine autoloadede filer så kan du bruge en længere kode og så få mængden af autoloadede filer, hvor mange poster der er, og de første 10 poster i forhold til størrelsen.
SELECT 'autoloaded data in KiB' as name, ROUND(SUM(LENGTH(option_value))/ 1024) as value FROM wp_options WHERE autoload='yes'
UNION
SELECT 'autoloaded data count', count(*) FROM wp_options WHERE autoload='yes'
UNION
(SELECT option_name, length(option_value) FROM wp_options WHERE autoload='yes' ORDER BY length(option_value) DESC LIMIT 10)
For at få en top 10 over det autoloadede data, så indtast følgende kode:
SELECT option_name, length(option_value) AS option_value_length FROM wp_options WHERE autoload='yes' ORDER BY option_value_length DESC LIMIT 10;
Du bestemmer selv, hvor mange du vil have vist ved at skrive et andet tal end 10 i koden.
Del og hersk over wp_options
Her lister vi en række forskellige filer, som måske optræder end del i din top-liste i wp_options, og hvad du kan gøre ved dem.
Wpurp_custom_template_
Disse filer er typisk forbundet til temaer eller plugins, du har eller har haft. Hvis de tilhører et tema/plugin, der ellers er slettet fra dit site, så skal de også slettes herfra. Du kan eventuelt bruge denne kode til at prøve at identificere, hvad filen tilhører:
grep -Ri "wpurp_custom_template_"
um_cache_userdata_
Også denne kan identificeres ved at indtaste en grep-kommando:
grep -Ri "um_cache_userdata_"
Her kan det også være nyttigt at klikke på ”edit” ud for de enkelte filer. Det kan vise, hvor filen stammer fra og eventuelt et link til udvikleren.
Ryd op i din wp_options database
Hvis du oplever problemer, som dem vi har listet herover, så er det en god idé at rydde ud i dit sites autoloadede data. Det kan samtidig anbefales at holde antallet af rækker i din database til det absolutte minimum.
Husk at tage en backup, inden du begynder at slette, så du er sikker på, at du ikke kommer til at slette vigtige filer permanent. Hvis du ikke er tryg ved at rydde op i databasen selv, så kan en webudvikler også hjælpe dig.
Når du er inde i din database, så find alle de filer frem, som er sat til at autoloade. Det gør du ved at give følgende kommando:
SELECT * FROM `wp_options` WHERE `autoload` = 'yes'
Find et plugin eller tema på listen, der ikke længere er i brug, og søg derefter specifikt på det ved at erstatte %DitPlugin% i denne kommando.
SELECT *
FROM `wp_options`
WHERE `autoload` = 'yes'
AND `option_name` LIKE '%DitPlugin%'
Markér derefter alle filerne og klik på “delete”.
Ryd op i WordPress sessioner
Cron jobs, der er ude af sync eller ikke bliver udført korrekt kan ende i ingenmandsland som rækker i WP_options databasen. Der kan endda være flere millioner rækker, som alle bør slettes. Du kan tjekke, om du har dette problem ved at bruge denne kommando.
SELECT *
FROM `wp_options`
WHERE `option_name` LIKE '_wp_session_%'
Og hvis du har, så kan du bruge denne kommando til at slette dem.
DELETE FROM `wp_options`
WHERE `option_name` LIKE '_wp_session_%'
Denne oprydning bør du gentage ofte for at sikre, at dit site ikke lider under rod i din wp_options-database.