WordPress Autoload laadt massa's opties uit de wp_options tabel in het geheugen bij elke pagina-aanvraag en drijft zo de TTFB, CPU en RAM vereisten op. Als zich hier te veel automatisch geladen gegevens ophopen, zal deze tabel je site merkbaar vertragen.
Centrale punten
Ik zal de belangrijkste feiten samenvatten, zodat je meteen kunt beoordelen of opties met autoload je vertragen. Bij elke aanvraag laadt WordPress alle items met autoload=yes, ongeacht of ze nodig zijn. Dit werkt als een onzichtbare rugzak die met elke geïnstalleerde plugin zwaarder wordt. Vanaf een autoload grootte van ongeveer 1 MB daalt de prestatie snel, wat vooral merkbaar is op kleinere hosts. Met een paar gerichte stappen kan ik de belasting permanent verminderen en de wp_opties schoon.
- Automatisch ladenAlles met autoload=yes wordt opgeslagen bij elke paginaaanvraag.
- Kritische omvangTTFB neemt sterk toe vanaf ~1 MB; 2-3 MB wordt beschouwd als een alarmbereik.
- Belangrijkste bestuurderPlugins, transiënten, logs en defecte cronjobs.
- MetingSQL/WP-CLI toont onmiddellijk de grootte en de top originator.
- remedieOpruimen, automatisch op „nee“ zetten, uitbesteden, regelmatig controleren.
Waarom Autoload vertraagt
Automatisch geladen opties komen bij elke aanvraag in het geheugen terecht, ongeacht of de pagina ze op dat moment nodig heeft; dit is precies wat geheugen opslokt. Bronnen. Kleine waarden vallen nauwelijks op, maar met veel plugins groeit het totaal al snel naar honderden kilobytes of zelfs meerdere megabytes. Vanaf ongeveer 1 MB zie ik regelmatig toenemende TTFB, tragere adminpagina's en meer CPU-pieken. Op shared hosting wordt de belasting vermenigvuldigd omdat parallelle verzoeken de database wordpress bovendien. Hoe groter het autoload-blok, hoe langer de deserialisatie duurt en hoe meer tijd je server verliest voor de eerste byte.
Hoe WordPress intern laadt (alloptions en object cache)
WordPress combineert alle automatisch geladen opties in één groot blok. Bij de eerste aanvraag wordt dit blok geladen met een enkele query en opgeslagen onder de collectieve sleutel alleopties wordt opgeslagen in de object cache. Dit vermindert het aantal database queries, maar niet de hoeveelheid te verwerken gegevens: Het hele blok moet worden gedeserialiseerd en in het geheugen worden bewaard. Met een Persistente objectcache (bijv. Redis of Memcached), verdwijnt de databasebelasting, maar de PHP processen moeten nog steeds de gegevens uitpakken en in het RAM bewaren. Dit betekent dat een groot autoload blok ook schadelijk is als de gegevens uit de cache komen - alleen verschuift de bottleneck van de database naar de CPU en RAM.
Dit is vooral belangrijk in het geval van:
- hoog parallellisme (veel gelijktijdige verzoeken): Elke PHP worker laadt het blok afzonderlijk.
- korte procestijden (FPM/Serverless): De overhead wordt opnieuw gemaakt voor elk nieuw proces.
- Beheerdersgebied en cronCaches worden vaker omzeild of ongeldig gemaakt, het autoload-blok telt elke keer.
Hoe je de grootste overtreders van autoload kunt vinden
Ik begin met een maatmeting direct in de wp_opties. Ik krijg de som via SQL: SELECT SUM(LENGTH(option_value)) AS autoload_size FROM wp_options WHERE autoload = 'yes';. Waarden boven 1 MB zijn kritisch, vanaf 2-3 MB wordt het gevaarlijk, vooral met verkeer. Vervolgens sorteer ik op grootte: SELECT option_name, LENGTH(option_value) AS bytes FROM wp_options WHERE autoload = 'yes' ORDER BY BYtes DESC LIMIT 20;. Dit is hoe ik grote arrays identificeer, oude Transiënten en plug-invermeldingen die vaak niet hoeven te worden geautoloaded; een korte Stapsgewijze instructies helpt om de resultaten betrouwbaar te evalueren.
Geavanceerde diagnostiek: tellen, groeperen, patronen herkennen
Naast de totale grootte controleer ik ook het aantal en de herkomst van de items:
- Aantal automatisch geladen opties:
SELECT COUNT(*) FROM wp_options WHERE autoload='yes'; - Top naamruimten (heuristisch via voorvoegsels):
SELECT SUBSTRING_INDEX(option_name,'_',1) AS ns, COUNT(*) AS cnt, SUM(LENGTH(option_value)) AS bytes FROM wp_options WHERE autoload='yes' GROUP BY ns ORDER BY DESCtes DESC LIMIT 10; - Transiënten die ten onrechte worden geautoloaded:
SELECT option_name FROM wp_options WHERE autoload='yes' AND option_name LIKE '_transient_%' ESCAPE '';
Ik gebruik deze queries om bijvoorbeeld snel statistiekencaches, artefacten van paginabouwers of logboekrestanten te vinden. Patronen zijn vaak duidelijk herkenbaar: een paar duizend kleine vermeldingen van een analyseplugin of een paar hele grote arrays van een builder.
Grenswaarden en maatregelen
Voor een snelle beoordeling gebruik ik vaste drempels en organiseer aan de hand daarvan de volgende Stappen uit. Hierdoor kan ik beslissingen nemen zonder tijd te verspillen aan onderbuikgevoelens. De tabel helpt bij het categoriseren en biedt duidelijke opties voor actie op elk gebied. Ik houd me eraan omdat het in veel projecten betrouwbaar werkt. Vooral wanneer middelen schaars zijn Duidelijkheid in minder dan een minuut.
| Autoload grootte | Risico | Aanbevolen maatregel |
|---|---|---|
| 0-500 KB | laag | Documentstatus, af en toe controleren |
| 500 KB-1 MB | medium | Controleer de grootste vermeldingen, verwijder overbodige vermeldingen |
| > 1 MB | hoog | Identificeer top originator, autoload vlag ingesteld op „no“.“ |
| > 2-3 MB | Kritisch | Systematisch opschonen, transiënten verwijderen |
Veilig opruimen: stap voor stap
Ik maak voor elke wijziging een back-up van de database, omdat een volledige back-up me beschermt tegen Fouten. Met WP-CLI is het snel en eenvoudig: wp db exporteren. Ik verwijder verlopen transiënten: wp tijdelijk verwijderen --verlopen en alleen als het nodig is allemaal: wp tijdelijk verwijderen --all. Ik verwijder specifiek verweesde plug-in opties, bijvoorbeeld met wp optie verwijder mijn_plugin_optie. Voor grote items die niet automatisch geladen hoeven te worden, implementeer ik de vlag: wp optie update optie_naam 'waarde' --autoload=nee; dan controleer ik de voorkant en de Backend grondig.
Vangnet, tests en terugdraaiing
Na elke wijziging controleer ik deze gebieden in deze volgorde: startpagina (als gast), een diepe subpagina, inloggen/uitloggen, admin dashboard en het opslaan van een bericht. Ik activeer ook Cron: wp cron gebeurtenis uitvoeren --due-nu en controleer het foutenlogboek. Als er iets kapot gaat, reset ik het specifiek: wp optie update optie_naam 'waarde' --autoload=yes of de back-up instellen. Voor grote arrays exporteer ik de inhoud vooraf met wp optie get optie_naam > backup.json, Ik kan het op elk moment herstellen.
Wat ik niet instel op „autoload=no“.
WordPress gebruikt sommige opties extreem vroeg in de bootstrap of bij elke aanvraagverwerking. Ik verander niet blindelings hun autoload vlag, zelfs als ze groot zijn:
- siteurl, homeBasis-URL's, vroeg vereist.
- permalink_structuur, herschrijf_regelsEssentieel voor het afhandelen van verzoeken; als ze niet in alleopties, er volgen nog meer hits in de database.
- sjabloon, stylesheetThemabepaling.
- blog_charset, tijdzone_string en andere kerninstellingen.
Basisregel: ik laat kernopties en opties die bij bijna elke aanvraag worden gebruikt autoloaden. Ik concentreer me op grote, zelden gebruikte pluginregels, cacheartefacten, logs en oude transients.
Wanneer opties groot moeten blijven
Sommige gegevens kunnen groot zijn, maar ze hoeven niet voor elke aanvraag in het geheugen te worden opgeslagen. land. Voor uitgebreide configuraties gebruik ik mijn eigen tabellen in plaats van wp_options; dit houdt de hoeveelheid autoload klein. Gebruikersgerelateerde informatie hoort thuis in de gebruikersmeta, niet in globale opties. Statische inhoud zoals lange CSS/JS-strings sla ik op als bestand en laad ik specifiek in. Bij het opslaan zet ik autoload direct op „nee“, bijvoorbeeld met add_option('naam', $data, '', 'nee');, om onnodige Laden te vermijden.
Gids voor ontwikkelaars: Patronen die schalen
Als ontwikkelaar vermijd ik enorme „mega-opties“ die alles in een array verzamelen. Een smalle kernset (autoload=yes) plus gerichte lazy loads (autoload=no) is beter. Praktische patronen:
- Opties splitsen:
mijn_plugin_core(klein, autoload=ja) enmijn_plugin_cache_*(groot, autoload=nee). - Gericht cachen: Vaak vereiste deelverzamelingen met
wp_cache_set()cache in plaats van dat grote opties automatisch worden geladen. - Transiënten correct gebruikenStandaard worden autoloaded niet opgeslagen en bewust opgehaald; alleen zeer kleine, vaak gebruikte transients autoloaden.
- Optiegroei stoppenSla geen logs of onbegrensde caches op in opties; dwing een maximale grootte en TTL af.
Preventie in plaats van reparatie
Ik houd mijn plugins slank en deactiveer alles wat geen duidelijk voordeel heeft, dus het autoload-blok blijft bestaan kleine. Eens per maand controleer ik de grootte met SQL of WP-CLI en documenteer ik de waarden. Onder Tools > Website status controleer ik notities over automatisch geladen opties. Voor sites met veel verkeer is het de moeite waard om hosting te gebruiken die de database wordpress efficiënt en houdt wp_options schoon. Een verzameling van beproefde en geteste Afstemstrategieën helpt me om problemen in een vroeg stadium te herkennen en te voorkomen dat ze ernstig worden.
Automatisering: kleine banen, grote impact
Ik plan een regelmatige schoonmaak. Een nachtelijke cron job (of een server cron die WP-CLI uitvoert) verwijdert verlopen transients en logt de autoload grootte in een bestand of tabel. Hierdoor kan ik trends zien voordat gebruikers ze opmerken. Voorbeeldproces (vereenvoudigd):
wp tijdelijk verwijderen --verlopen
wp db query "SELECT NOW(), SUM(LENGTH(option_value)) FROM wp_options WHERE autoload='yes';" >> autoload_stats.log
Een kleine gezondheidscontrole die de top 10 vermeldingen met datum opslaat is handig. Een blik op het logboek is genoeg om uitschieters toe te wijzen aan een specifiek tijdstip - meestal na een plugin-update of een nieuwe functie.
Praktijkvoorbeeld: 60 minuten schoonmaken
In één project vond ik 5.500 automatisch geladen opties van in totaal ongeveer 2 MB; de pagina retourneerde de eerste byte na ca. 1.900 ms. Na het maken van back-ups, het verwijderen van tijdelijke bestanden, het controleren van de top 20 en het aanpassen van vlaggen werd de laadtijd gehalveerd tot ongeveer 500 ms. Het CPU-gebruik daalde van 89 % naar ongeveer 2,5 % en de backend reageerde aanzienlijk sneller. De procedure was eenvoudig: meten, schoonmaken, testen, documenteren. Dit is precies de routine die ik regelmatig gebruik om de groei van de wp_opties permanent.
Typische oorzaken en oplossingen
Paginabouwers schrijven graag grote cache-arrays in opties die ik liever naar bestanden schrijf. weggooien. Ik sla statistieken op als niet-automatisch geladen transients en haal ze specifiek op. Logs horen thuis in roterende bestanden, niet in wp_options. Mislukte cron jobs veroorzaken oude transients; hier pas ik intervallen en timeouts aan. Deze eenvoudige veranderingen verminderen snel de hoeveelheid autoloads en houden ze stabiel op de lange termijn stabiel.
Invloed van caches, FPC en hosting
Een upstream full-page cache (FPC) beschermt voornamelijk anonieme bezoekers. Maar overal waar de cache wordt omzeild - ingelogde gebruikers, winkelmand, kassa, admin, cron, WP-CLI - treedt het autoload-blok volledig in werking. Een snelle databaseserver verbergt de I/O-belasting, maar de CPU-tijd voor deserialisatie en het RAM-verbruik blijven. Vooral op kleine instances met weinig FPM-workers leidt een groot autoload-blok tot wachtrijen en time-outs, ook al komen de gegevens „uit de cache“. Het doel is daarom altijd om het blok zelf klein te houden, niet alleen om de bron sneller te maken.
Monitoring en kerncijfers
Ik volg TTFB, First Contentful Paint en laadtijd van de backend voor en na elke Opruimen. Tegelijkertijd documenteer ik de autoloadgrootte, het aantal autoloaded opties en de grootste ingangen. Een klein blad met datum, grootte en TTFB is voldoende voor duidelijke trends. Voor onderhoud gebruik ik maandelijkse SQL-query's en een kort Database onderhouden-checklist. Dit stelt me in staat om uitschieters in een vroeg stadium te herkennen en de database wordpress blijvend slank.
Multisite: Twee bouwplaatsen in één oogopslag
In multisite-setups is er sprake van autoload-belasting, zowel per site als op netwerkniveau. Daarom controleer ik de wp_opties van elke site (tabel prefix per blog) en daarnaast de netwerkopties. Grote, wereldwijd gebruikte matrices hebben invloed op alle sites. Ga te werk zoals bij de enkelvoudige opstelling: meten, topvermeldingen identificeren, grote waarden uitbesteden of overschakelen naar autoload=no als ze niet voor elke aanvraag nodig zijn. Een vermindering is onmiddellijk merkbaar, vooral bij de netwerkbeheerder.
Vaak voorkomende misverstanden - kort toegelicht
- „Redis lost het probleem op.“ Het vermindert de DB queries, maar niet de grootte van het autoload blok. CPU en RAM kosten blijven.
- „FPC maakt autoload irrelevant.“ Niet voor ingelogde gebruikers, Cron en Admin. Het FPC-voordeel is daar niet van toepassing.
- „Alle transiënten verwijderen is gevaarlijk.“ Het is veilig, maar leidt alleen maar tot nieuwe opbouw. Gebruik het doelgericht en planmatig.
- „Een groot blok is oké als er weinig ingangen zijn.“ De som van de bytes en de deserialisatie is doorslaggevend, niet het aantal alleen.
Testplan na de schoonmaak
- VoorkantStartpagina, willekeurig archief en detailpagina, als gast en ingelogde gebruiker.
- FunctiesZoeken, contactformulier, winkelmandje/kassa (indien winkel).
- AdminDashboard, berichtenlijst, een bericht/product opslaan, pluginpagina.
- AchtergrondGeplande cron-events uitvoeren, foutenlogboek controleren, willekeurig TTFB meten.
Samenvatting voor snelle beslissingen
Autoloaded opties zijn een stille prestatiekiller, die ik met een paar duidelijke stappen kan elimineren. vang. Ik meet de grootte, verwijder oude transiënten, stel onnodige invoer in op autoload=no en besteed grote gegevens uit. Vervolgens test ik de frontend en backend en noteer ik de meetpunten. Met een uurtje focuswerk verminder ik de autoloadbelasting vaak met 30-70 % en halveer ik de laadtijden. Als je deze routine elke maand herhaalt, kun je de wp_opties snel en de site reageert merkbaar sneller.


