Plattformbyttet fra WordPress til Astro skulle være prosjektet. Det viste seg å være prologen. Å eksportere innholdet, bygge malene på nytt, få et statisk nettsted til å kompilere og distribuere til Cloudflare Pages, det tok uker. Så begynte det egentlige året: omdirigeringer, hreflang, paritet på tvers av seks språk og et bygg som vokste ut av plattformen det ble distribuert til. Dette er en rapport om hvor tiden gikk, for tiden gikk ikke dit planleggingen sa den skulle.
Polemikken, hvis det finnes en, er med fremstillingen av plattformbyttet som en flytting. “Forlat WordPress til fordel for et statisk nettsted” høres ut som en engangsmigrering. For et flerspråklig innholdsnettsted ligger det nærmere det å ta eierskap til tre systemer WordPress pleide å skjule: rutingslaget, bygget og strukturen på tvers av språk. Ingen av dem er vanskelige. Alle er løpende.
WordPress-til-Astro-migrering, den virkelige kostnaden: TL;DR i 4 punkter
- Flyttingen er den billige delen. Maler og innholdseksport tok uker; migreringen brukte rundt tolv måneder på å nå stabil søkeytelse uten tilbakefall.
- Omdirigeringslaget er den første overraskelsen. Tusenvis av tidligere indekserte URL-er trenger hver sin 301, og volumet kolliderte med en filstørrelsesgrense på Cloudflare Pages som stille forkastet regler.
- Paritet på seks språk er løpende arbeid, ikke en oppgave. Hreflang, kanoniske URL-er og seksjonsstruktur må holde seg samstemte på tvers av hver språkversjon, for alltid.
- Bygget vokste ut av Cloudflares egen runner. Et byggetak på 8 GB er ikke nok til tusenvis av forhåndsgjengitte sider; svaret var å bygge lokalt med en 16 GB heap og distribuere det ferdige artefaktet.
Ordliste: statisk bygg, prerender, hreflang, kant
Rapporten hviler på noen plattformbegreper.
- Statisk bygg - hele nettstedet gjengis til vanlige HTML-filer på forhånd, under et byggesteg, i stedet for per forespørsel.
- Prerender - å generere hver sides HTML ved byggetid. Et nettsted med seks språk multipliserer sideantallet med antall språk, så bygget skalerer med innhold ganger språk.
- Cloudflare Pages - verten. Den serverer de forhåndsbygde filene fra kanten av nettverket og kan også kjøre bygget, innenfor minnegrenser.
- Wrangler - Cloudflares kommandolinjeverktøy, brukt her til å distribuere et lokalt bygget artefakt direkte, og forbi plattformens byggesteg.
- Hreflang - lenkene som forteller søkemotorer hvilken side som er den tyske, polske eller spanske versjonen av samme artikkel.
- 301-omdirigering - en permanent videresending som bærer en flyttet URLs rangeringssignal til sin nye adresse.
Uker: flyttingen alle budsjetterer for
Den synlige migreringen er delen som blir estimert, og estimatet er omtrent riktig. Innhold kommer ut av WordPress, maler bygges på nytt i Astro med Tailwind, et bygg kompilerer, en distribusjon lander på Cloudflare Pages. Et innholdsnettsted av moderat størrelse når et fungerende statisk bygg i løpet av uker. Dette er fasen som demonstrerer godt og overbeviser alle om at prosjektet er nesten ferdig.
Det er ikke nesten ferdig. Det er forbi delen som var lett å forutsi, og ankommer delen ingen planla. Det fungerende bygget beviser at malene gjengis; det beviser ingenting om hvorvidt de gamle URL-ene løses opp, om språkene er enige med hverandre, eller om bygget fortsatt fullfører når innholdet tredobles.
Måneder: omdirigeringslaget ingen planla
Den første måneden av den lange halen gikk til omdirigeringer. Hver URL WordPress noensinne hadde eksponert og Google noensinne hadde indeksert, trengte en 301 til sin nye Astro-adresse, ellers ble den en 404 og rangeringssignalet fordampet. På en enspråklig blogg er det en lang liste. På et nettsted med seks språk og beskrivende slugger løper den opp i tusenvis.
Det volumet traff en vegg som har sin egen feltrapport: Cloudflare Pages forkaster stille _redirects-regler forbi en filstørrelsesgrense på 100 KB, uten advarsel, så en del av omdirigeringskartet ble distribuert grønt og slo aldri inn. Symptomet dukket opp måneder senere som 404-er i Search Console og utilgjengelige produktsider i Merchant Center, lenge etter at migreringen så ferdig ut. Lærdommen generaliserer forbi Cloudflare: i et plattformbytte er omdirigeringskartet ikke et avkrysningspunkt du fullfører; det er et system du drifter, med egne feilmoduser og egen overvåking.
Måneder: seks språk som må være enige for alltid
WordPress skjuler, med de rette pluginene, flerspråklig struktur bak et administrasjonspanel. Et statisk bygg blottlegger den. Seks språkversjoner av hver artikkel må holde seg strukturelt parallelle: samme seksjonsoverskrifter i samme rekkefølge, hreflang-lenker som faktisk løser opp til hver søsterversjon, kanoniske URL-er som peker dit de skal, og taksonomi-URL-er som matcher på tvers av språk. Når ett språk driver av, sprekker den tverrspråklige lenkegrafen på indekseringslaget mens hver side fortsatt gjengis helt fint.
Dette henger direkte sammen med en separat feilmodus i hvordan KI-oversettelse ødelegger flerspråklig SEO: oversettelsesverktøy som berører strukturelle felt, produserer en språkdrift som er usynlig på siden og dyr i indeksen. Etter migreringen sluttet pariteten å være en milepæl og ble en stående sjekk, kjørt ved hver innholdsendring, for seks språk holder seg ikke samstemte av seg selv.
Verktøyene du bygger på nytt som WordPress ga gratis
En stillere kostnad ved å forlate WordPress er at du arver ansvaret for sjekker som plattformen og pluginene dens pleide å utføre usynlig. WordPress validerte interne lenker gjennom editoren, holdt et nettkart oppdatert gjennom en plugin og advarte om brutte referanser i panelet. Et statisk bygg gjør ingenting av det på egen hånd; du bygger det tilbake, ellers sender du tilbakefall.
I løpet av året betydde det et lite bibliotek av validatorer koblet inn i distribusjonen: validering av interne lenker mot den ekte ruteflaten slik at en omdøpt slug ikke kan etterlate hengende lenker, sjekker av strukturerte data slik at skjemaet i frontmatter holder seg velformet på tvers av språk, paritetssjekker som sammenligner søsterspråk for manglende seksjoner, og en generator for nettkart og hreflang ved byggetid. Hver av dem erstatter noe WordPress gjorde stille. Nettoresultatet er mer kontroll og mer trygghet (sjekkene er eksplisitte, versjonerte og kjører i CI), men det er ekte ingeniørarbeid som ordet migrering ikke nevner. Alle som dimensjonerer et plattformbytte, bør legge til denne linjen: du flytter ikke bare innholdet, du implementerer på nytt rekkverkene den gamle plattformen anvendte gratis.
Måneder: bygget som vokste ut av verten sin
Den siste overraskelsen var mekanisk. Cloudflare Pages serverer et stort statisk nettsted uten anstrengelse, men å bygge ett er begrenset av minne, og plattformens egen bygge-runner stopper på 8 GB. Et flerspråklig Astro-nettsted med tusenvis av forhåndsgjengitte sider, der hvert språk multipliserer antallet, trenger mer heap enn det, og plattformbygget begynte å feile med tom-for-minne-feil som tok tid å gjenkjenne for det de var.
Løsningen var å slutte å bygge på plattformen. Nettstedet bygger nå lokalt med en 16 GB heap, og den ferdige utdataen dyttes til Cloudflare Pages med Wrangler, som distribuerer et artefakt uten å bygge det på nytt. En lokal maskin i M-serien fullfører bygget pålitelig på minutter der den begrensede runneren ikke kunne fullføre i det hele tatt. Bilder tvang frem en beslektet disiplin: alt som kjøres gjennom Astros asset-pipeline optimaliseres ved byggetid, noe som er utmerket, men minnesultent, så forhåndsoptimaliserte bakgrunner serveres som de er fra public-mappen, og bare bilder som drar nytte av behandling blir i pipelinen, holdt i rimelig størrelse for å holde bygget under taket sitt.
Hva migreringen faktisk kjøpte
Sagt rett ut så året ikke leses som anger: flyttingen var verdt det. Sider gjengis fra kanten som statiske filer, noe som er raskere og jevnere enn å gjengi på forespørsel, angrepsflaten krympet til omtrent ingenting dynamisk, og crawler-tilgangen ble forutsigbar i stedet for avhengig av plugin-oppførsel. For et innholdsnettsted der hastighet, stabilitet og det å være pålitelig lesbart for søke- og KI-crawlere er poenget, er det det riktige byttet.
Det ærlige forbeholdet er det samme som bør gå foran ethvert plattformbytte: det er det riktige byttet for et innholdsnettsted, og det gale for et nettsted som lever av dynamisk, innlogget funksjonalitet, der WordPress’ gjengivelse på forespørselstid og økosystem er funksjonen, ikke byrden. Beslutningen er ikke “statisk er bedre”. Den er “statisk er bedre for denne typen nettsted, og her er året med halearbeid som ordet migrering skjuler”. Flere ingeniørrapporter fra denne ombyggingen finner du på wppoland-bloggen.


