Dezelfde site, statisch gebouwd. Wat dat oplevert, en waar hij bewust afwijkt.
Gemeten op 17 september 2026. Oud: storyyo.com (WordPress). Nieuw: storyyo-staging.pages.dev.
De nieuwe site is geen herontwerp. Elke pagina is nagebouwd op de bron, en per band gecontroleerd door de twee versies naast elkaar te zetten en de hoogtes te meten.
Van de 52 gecontroleerde pagina's lopen er 46 binnen 30 pixels van de bron en 50 binnen 50 pixels, op pagina's die 2500 tot 15000 pixels lang zijn. De twee die er verder buiten vallen wijken met opzet af; die staan in hoofdstuk 06.
Gemeten met Lighthouse 13, drie keer per site, op de mobiele instelling. Drie keer, omdat één meting schommelt. De uitkomsten lagen dicht bij elkaar; hieronder de bandbreedte.
| Wat | Oud | Nieuw |
|---|---|---|
| Prestatiescore | 55, 55, 55 | 97, 98, 99 |
| Eerste tekst in beeld (FCP) | 16,1 tot 16,2 s | 1,34 tot 1,41 s |
| Grootste element in beeld (LCP) | 18,8 tot 18,9 s | 2,09 tot 2,40 s |
| Blokkeertijd (TBT) | 0 ms | 0 tot 10 ms |
| Verschuiving tijdens laden (CLS) | 0 | 0,051 |
| Paginagewicht | 3229 KB | 844 KB |
| Verzoeken op de homepage | 32 | 30 |
| Externe partijen bij het laden | 5 | 0 |
Die 16 seconden tot de eerste tekst is geen meetfout. Lighthouse rekent met een trage mobiele verbinding, en op de oude site moet de browser eerst 3,2 MB en een reeks scripts van vijf andere domeinen ophalen voordat er iets te lezen is.
Eén cijfer is slechter geworden: CLS, van 0 naar 0,051. Dat is de verschuiving tijdens het laden. Hij komt van het lettertype: de kop staat er eerst in de reserveletter en springt bij het omschakelen. De drie manieren om dat weg te halen kosten allemaal meer dan ze opleveren (een reserveletter op maat, de kop vastzetten, of het lettertype blokkerend laden dat weer een halve seconde FCP kost). 0,051 zit ruim binnen de grens van 0,1 die Google als "goed" rekent, dus het blijft zo. De vier metingen staan in de code.
Gemeten over álle pagina's van beide sites, niet over een steekproef: 317 pagina's op de oude site, 491 op de nieuwe (de nieuwe heeft ook de Engelse routes).
| Wat | Oud | Nieuw |
|---|---|---|
Pagina's zonder h1 | 25 | 0 |
Pagina's met meer dan één h1 | 5 | 0 |
| Pagina's zonder meta-omschrijving | 18 | 0 |
| Dubbele omschrijvingen | 20 | 2 |
| Koppenvolgorde springt (h1 naar h3) | 101 | 0 |
| Beelden zonder alt-attribuut | 26 | 0 |
| Canonical ontbreekt | 0 | 0 |
| Schema.org ontbreekt | 0 | 0 |
Dit wordt bij elke bouw opnieuw gecontroleerd. Mist een pagina een kop, een omschrijving of een zoekwoord, dan stopt de bouw en komt de site niet online. Datzelfde geldt voor een interne link die nergens heen gaat.
De 35 dubbele titels op de nieuwe site zijn de pagineringspagina's van de blogs ("Pagina 2 van 49"), die met opzet dezelfde titel delen en op noindex staan.
Steeds vaker beantwoordt een AI de vraag van een bezoeker in plaats van een zoekmachine. Dan moet die AI je site wél mogen lezen. Op storyyo.com mag dat niet.
| Crawler | Oud | Nieuw |
|---|---|---|
| GPTBot (ChatGPT) | 403 geweigerd | 200 toegelaten |
| ClaudeBot en Claude-Web | 403 geweigerd | 200 toegelaten |
| CCBot (Common Crawl) | 403 geweigerd | 200 toegelaten |
| Amazonbot, Bytespider, cohere-ai, Diffbot | 403 geweigerd | 200 toegelaten |
| PerplexityBot, Google-Extended, Googlebot | 200 | 200 |
/llms.txt | 404 bestaat niet | 200 |
| robots.txt noemt AI-bots | nee | ja |
Die 403 komt niet uit je robots.txt, maar uit Cloudflare. In de zone staat AI Crawl Control aan; die blokkeert de verzoeken voordat je site ze ziet. Dat is met één schakelaar terug te draaien, en dat hoeft niet te wachten op de nieuwe site.
Gemeten met securityheaders.com. Links de oude site, rechts de nieuwe.
De oude site stuurt twee van de zes headers mee. Er ontbreken er vier, waaronder de Content-Security-Policy: die bepaalt welke scripts een pagina mag uitvoeren. Zonder die regel kan een script dat via een plugin of een advertentie binnenkomt gewoon draaien.
Deze adressen staan op de oude site open:
/wp-login.php 200 inlogscherm, open voor iedereen
/wp-json/wp/v2/users 200 geeft de gebruikersnamen van de redactie
/?rest_route=/ 200 dezelfde lijst via een andere weg
/wp-cron.php 200 taakplanner, aan te roepen door iedereen
/wp-links-opml.php 200 noemt de versie: WordPress 6.9.7
/license.txt 200 bevestigt dat het WordPress is
Een gebruikersnaam plus een inlogscherm is de helft van een inbraak. De nieuwe site heeft geen van deze adressen, want er is geen WordPress meer: het zijn kant-en-klare bestanden die Cloudflare uitserveert.
De afspraak is: op desktop 1:1 met de bron, op mobiel repareren wat daar stuk is. Elke afwijking staat opgeschreven. Dit zijn de vier die je op een pagina ziet.
Op de oude site staat op /contact/ een leeg blok waar de Calendly-agenda hoort: het blok is er, het script dat het vult niet. Een bezoeker ziet 900 pixels paars met alleen een kop. In de nieuwe site laadt die agenda echt, en daarom is die pagina 231 pixels langer dan de bron. Datzelfde blok zit in het contactformulier op de oude site: daar staat een foutmelding in paars op paars, onzichtbaar maar aanwezig.
Op de oude site laden Wistia en Calendly voordat je iets gekozen hebt, en ook nadat je zou weigeren. De nieuwe site houdt ze tegen tot je toestemming geeft, en je kunt die keuze later wijzigen via de voet. Op /cookie-beleid/ staat er bovendien een tabel bij met wat er precies laadt, van wie en wanneer. Die tabel maakt die pagina 530 pixels langer dan de bron.
De oude site laadt vijf blogs en daarna nog eens vijf met een knop. Dat werkt alleen met JavaScript en een zoekmachine ziet de rest nooit. De nieuwe site heeft 49 echte pagina's die allemaal vindbaar zijn.
Op de homepage staat op de oude site 260 pixels lege crème tussen de reviews en de pillenrij, en 300 pixels zwart tussen de laatste video en de knop eronder. Dat leest als een gat, niet als rust. In de nieuwe site is dat teruggebracht.
/en/<blog> gewoon 200 met Nederlandse tekst onder een Engelse URL.storyyo.com/wp-json/wp/v2/users. Doe daarna hetzelfde op de nieuwe site.curl -s -o /dev/null -w "%{http_code}\n" -A "GPTBot" https://storyyo.com/
Daarna hetzelfde met het nieuwe adres.