KakapoWPKakapoWP
InloggenGratis proberen
Helpcentrum/Performance/Autoload: meegeladen opties meten en omzetten

Autoload: meegeladen opties meten en omzetten

Geldt voor: Kakapo Performance·4 min leestijd

Wat hier eigenlijk wordt gemeten

WordPress leest bij elke afzonderlijke aanroep — startpagina, afbeelding, REST-aanroep — alle opties met een gezette autoload-kolom in één enkele query. Deze regels kosten dus niet één keer tijd, maar altijd. Welke waarden van de kolom als ‘wordt geladen’ tellen, vraagt Kakapo bij WordPress zelf op (wp_autoload_values_to_autoload, sinds 6.6, inclusief filter); op oudere installaties geldt de lijst yes, on, auto-on, auto. Geteld wordt vervolgens de lengte van elke waarde in PHP, dus echte bytes. LENGTH() in SQL zou sneller zijn, maar telt afhankelijk van het stuurprogramma tekens in plaats van bytes — onder SQLite zouden bij umlauten en emoji’s verkeerde getallen in de interface staan. Er wordt gelezen in stappen van 100 regels en hoogstens 20.000 regels per doorloop; wordt dat plafond bereikt, dan zegt de interface het en merkt ze de getallen uitdrukkelijk aan als ondergrens. De meting loopt alleen bij het openen van het onderdeel of bij ‘Opnieuw meten’ — nooit in de paginaopbouw van een bezoeker — en geldt daarna 300 seconden.

De vier kengetallen goed lezen

Bovenaan staan vier getallen. ‘Bij elke aanroep geladen’ noemt de totale grootte, het aantal opties en de duur van de meting. ‘Aandeel in de waarschuwingsdrempel’ rekent dat af tegen 800.000 bytes — exact dezelfde drempel als de controle ‘Websitetoestand’ van de WordPress-core, inclusief het filter daarvan; twee verschillende waarschuwingsgrenzen in één installatie zouden alleen maar verwarrend zijn. ‘Daarvan om te zetten’ is het deel zonder actieve eigenaar, dus dat wat je werkelijk kunt aanraken. ‘Al omgezet’ telt op wat je hier al uit het laadproces hebt gehaald. Daaronder toont de kaart ‘Waar de last vandaan komt’ dezelfde hoeveelheid opgesplitst naar herkomst, de tweede kaart de 25 grootste afzonderlijke posten.

De toewijzing is een naamsvergelijking, geen bewijs

De options-tabel heeft geen kolom ‘Eigenaar’. Kakapo vergelijkt de optienaam daarom met wat er werkelijk op de schijf staat: mapnaam, bestandsnaam van het hoofdscript en tekstdomein van elke geïnstalleerde plugin, plus de slugs van alle thema’s. Het langste passende voorvoegsel wint, anders zou ‘kakapowp’ het winnen van ‘kakapowp_performance’ en werd de verkeerde plugin genoemd. Wat een plugin voor zijn opties werkelijk gebruikt, staat in geen enkele header — een afkorting als ‘wpseo’ is niet af te leiden uit ‘Yoast SEO’. Zulke gevallen belanden in de bak ‘geen toewijzing’, en dat betekent ‘ik weet het niet’, niet ‘hoort bij niemand’. Ken je een voorvoegsel zeker, dan vul je het aan via de filter kwpp_autoload_praefixe; de plugin doet dat voor zijn eigen voorvoegsel net zo.

Wat zich laat omzetten — en waarom veel geblokkeerd blijft

De knop ‘Omzetten’ verschijnt alleen als aan twee voorwaarden tegelijk is voldaan: de optie is minstens 1 KB groot en ze hoort bij geen enkel actief onderdeel. Geblokkeerd blijven daarmee opties van de WordPress-core (vaste lijst uit populate_options plus de patronen theme_mods_*, widget_* en *_user_roles — die zijn bij elke aanroep werkelijk nodig), tussenopslag (transients horen in de diepe reiniging, waar ze helemaal verdwijnen in plaats van alleen later te worden geladen), alles van een actieve plugin of van het actieve thema, en alles onder 1 KB, omdat de extra afzonderlijke query daar meer kost dan de bespaarde bytes. Ga met de muis over een grijs gemaakte knop: de reden staat er als toelichting bij. Het lonende geval is bijna altijd de inactieve of allang gedeïnstalleerde uitbreiding waarvan de regels simpelweg zijn blijven liggen. Zonder geldige licentie is het onderdeel in ruststand — er wordt nog steeds gemeten en getoond, maar niets omgezet.

Omzetten, logboek, terugnemen

Er wordt geschreven via wp_set_option_autoload() van de core, niet met een eigen UPDATE: alleen zo worden achteraf de juiste tussenopslagen geleegd, anders zou een externe objectcache verder de oude stand leveren. Op installaties zonder deze functie zet Kakapo ‘no’ en leegt het alloptions, notoptions en het afzonderlijke item zelf. Vóór het schrijven wordt de regel nog een keer vers gecontroleerd: bestaat hij nog, staat hij nog wel op ‘geladen’, en hoe groot is hij op dit moment — in het logboek moet staan wat er werkelijk uit het laadproces is gehaald. Voert de database de wijziging niet uit, dan zegt de melding dat uitdrukkelijk, en is er niets gewijzigd. Het logboek bewaart tot 200 items met de oude kolomwaarde, grootte, tijdstip en gebruikersnaam. Terugnemen kan per stuk of voor alle tegelijk; teruggeschreven wordt ‘geladen’, omdat WordPress’ tussenwaarde ‘auto’ via de corefunctie niet te herstellen is — de oorspronkelijke waarde blijft in het logboek zichtbaar. Is een optie intussen helemaal verdwenen, bijvoorbeeld omdat de plugin gedeïnstalleerd is, dan meldt Kakapo dat en verwijdert het overbodig geworden item, in plaats van ‘teruggenomen’ te beweren.

Vond je dit artikel nuttig?