Waarom verschillen twee rapporten van dezelfde site?

Soms tonen twee rapporten die enkele minuten na elkaar zijn uitgevoerd verschillende resultaten. Deze gids legt de meest voorkomende oorzaken uit: caching, dynamische content, A/B-tests en variabiliteit op het moment van crawlen.

U voert een rapport uit, lost iets op, voert een nieuw rapport uit en het nieuwe rapport toont onverwachte wijzigingen. Of u voert twee rapporten direct na elkaar uit zonder iets te wijzigen en ze verschillen toch. Dat is verrassend gebruikelijk en bijna altijd te verklaren door hoe het moderne web werkt en niet door een bug in de analyse. Dit artikel loopt door de meest waarschijnlijke redenen.

Korte versie: Een website is geen statisch document. Caches verlopen, dynamische content rouleert, A/B-tests kiezen verschillende varianten, scripts van derden komen en gaan. Twee rapporten zijn twee momentopnamen van een bewegend doelwit.

1. Cachelagen

Caching is veruit de meest voorkomende reden voor verschillen tussen rapporten. Een typische WordPress-site heeft meerdere cachelagen op elkaar gestapeld:

  • Page cache (bijv. WP Rocket, LiteSpeed, W3 Total Cache): bewaart volledig gerenderde HTML en serveert die voor een instelbare levensduur. Verloopt de levensduur, dan triggert de volgende bezoeker een regeneratie die andere advertenties, andere aanbevelingen of een vers gegenereerde combined-asset-bestandsnaam kan bevatten.
  • Object cache (Redis, Memcached): cachet resultaten van databasequery's. Minder zichtbaar van buitenaf, maar kan veranderen welke plug-ins of widgets bij een bepaald verzoek vuren.
  • CDN edge cache (Cloudflare, BunnyCDN, KeyCDN): het CDN kan een iets oudere of nieuwere versie serveren, afhankelijk van welke edge node het verzoek ontvangt.
  • Hostercache (managed WordPress-hosters): Kinsta, WP Engine, SiteGround en anderen draaien hun eigen server-side caches met hun eigen invalidatielogica.

Twee rapporten die enkele minuten na elkaar worden uitgevoerd, kunnen gemakkelijk in verschillende cachetoestanden landen. Dat alleen verklaart al de meeste verschillen.

2. Dynamische content

Veel sites renderen delen van de pagina dynamisch bij elk verzoek. Veelvoorkomende voorbeelden:

  • „Recente berichten“- of „Nieuwste producten“-widgets die de nieuwste items ophalen.
  • „Misschien bevalt u dit ook“-aanbevelingen.
  • Random testimonialroulators.
  • Advertentieslots die creatives rouleren.
  • Gepersonaliseerde begroetingen op basis van geo-IP of apparaat.
  • Live tellers, voorraden, prijzen.

Zelfs zonder cachewijziging kunnen twee verzoeken verschillende HTML opleveren, verschillende woordtellingen, verschillende afbeeldingstellingen en soms verschillende externe bronnen.

3. A/B-tests en feature flags

Draait uw site een A/B-testtool (VWO, Optimizely, Convert) of feature flags (LaunchDarkly, GrowthBook), dan kan elk bezoek aan een andere variant worden toegewezen. Varianten kunnen betekenen:

  • Verschillende koppen of afbeeldingen.
  • Een andere paginalay-out.
  • Verschillende scripts of diensten van derden geladen.
  • Verschillende cookies ingesteld.

Vanuit het oogpunt van het rapport heeft dezelfde URL legitiem twee verschillende pagina's geproduceerd.

4. Scripts van derden en tag managers

Tag managers (Google Tag Manager, Tealium, Matomo Tag Manager) bepalen on-the-fly welke tags worden geactiveerd. Voorwaarden kunnen tijdstip, locatie van de bezoeker, toestemmingsstatus en samplingregels omvatten. Een rapport van vandaag en een van morgen kunnen volledig verschillende trackingpixels en analyticsscripts laden, ook al is de website zelf niet veranderd.

5. Cookietoestemming en de toestemmingsbanner

Moderne consent managers serveren vaak een uitgeklede versie van de pagina totdat toestemming is gegeven, en laden dan de volledige set tracking- en personalisatiescripts. InspectWP bezoekt zonder toestemming. Verandert uw consent manager zijn standaardgedrag (default-deny vs. default-accept-in-bepaalde-regio's), dan verandert het rapport mee.

6. Tijdgebonden content

Sommige sites veranderen met de klok mee:

  • Promotiebanners die op een specifiek tijdstip live gaan.
  • Seizoensgebonden hero-afbeeldingen.
  • Voorraad- en prijsupdates.
  • Geplande blogposts.

Een rapport om 09:00 en een om 09:05 kunnen op een geplande wijziging gaan zitten.

7. Geografische verschillen

InspectWP crawlt altijd vanuit dezelfde vaste locatie. Vergelijkt u een InspectWP-rapport met wat u in uw eigen browser uit een ander land ziet, dan kunt u legitiem andere content zien (taal, prijzen, beschikbare producten), andere lettertypen (CDN-endpoints), andere externe bronnen (regiospecifieke Maps-providers).

8. Plug-in- en thema-updates

WordPress en veel plug-ins updaten automatisch. Tussen twee rapporten kan een plug-in zijn bijgewerkt, zijn assetbestandsnamen hebben gewijzigd, een functie hebben verwijderd of een nieuwe externe bron hebben toegevoegd. De site lijkt voor een mens gelijk maar produceert een andere fingerprint.

9. Variabiliteit aan de serverzijde

HTTP-versieonderhandeling, keuze van compressie-algoritme (gzip vs. brotli), specifieke HTTP-headers en details van de TLS-handshake kunnen alle variëren afhankelijk van welke server in een load-balanced cluster het verzoek afhandelt. Deze verschillen verschijnen in de secties Headers en Prestaties.

10. Hoe twee rapporten zinvol vergelijken

  1. Voer beide rapporten kort na elkaar uit als u „as-is“-toestanden wilt vergelijken.
  2. Wis de caches vóór elk rapport als u de toestand na cache-rebuild wilt vergelijken.
  3. Schakel A/B-tests tijdelijk uit als u specifiek de basis wilt meten.
  4. Crawl exact dezelfde URL, inclusief trailing slash en queryparameters. https://example.com en https://example.com/ zijn technisch verschillende URL's.
  5. Kijk naar structuur, niet naar ruis. Verschillen in „woordaantal“ van enkele procenten of een enkele rouleerende advertentie zijn meestal niet betekenisvol. Verschillen in plug-in-lijsten, beveiligingsheaders, SEO-tags of critical-status-velden meestal wel.
Tip: voert u automatische rapporten uit, gebruik dan de rapportgeschiedenisweergave om patronen door de tijd op te sporen in plaats van naar verschillen tussen losse runs te staren. Een veld dat bij elke crawl heen en weer schiet, is dynamisch; een veld dat één keer is omgeklapt en omgeklapt blijft, is een echte wijziging.

11. Veelgestelde vragen

Vrijwel altijd niet. De plug-ins zijn nog steeds geïnstalleerd en actief, ze zijn alleen tussen de twee crawls gestopt met het uitzenden van een herkenbare fingerprint. De meest voorkomende oorzaak is een verse asset-combinatiebundel van een cachingplug-in. Zie Waarom wordt mijn plug-in of thema niet gedetecteerd? voor details.

12. Gerelateerde artikelen