export async function getProducts(limit = 10) {
const query = `
query GetProducts($first: Int) {
products(first: $first) {
nodes {
id
name
slug
image { sourceUrl }
... on SimpleProduct { price }
}
}
}
`;
const res = await fetch(process.env.WORDPRESS_API_URL!, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ query, variables: { first: limit } }),
next: { revalidate: 3600 } // ISR la o oră
});
const { data } = await res.json();
return data?.products?.nodes || [];
}Am văzut tot mai des hype-ul ăsta cu "treci pe headless că zboară site-ul". Am testat arhitectura asta pe un magazin WooCommerce cu vreo 12.000 de produse active și vreau să lăsăm la o parte marketingul de agenție. Hai să vedem când merită cu adevărat și unde devine un coșmar logistic.
Experiența mea cu proiectul de 12k produse
Am avut un client acum un an care murea pe mobil cu o temă clasică de Elementor. TTFB-ul era groaznic, iar scorul Lighthouse se tăra undeva pe la 18 puncte. Serverul VPS gâfâia la fiecare campanie de newsletter.
Am decis să facem split-ul: WordPress rămâne doar pe post de bază de date și admin (CMS), iar pe frontend am trântit Next.js găzduit pe Vercel. Rezultatul pe viteză a fost brutal. Am scăzut timpul de încărcare pe mobil de la 4.8 secunde la 1.2 secunde. Am optimizat și procesul de deployment, reușind să reduc timpul de build pe Vercel de la 12 minute la sub 3 minute după ce am configurat corect Incremental Static Regeneration (ISR). Rata de conversie a crescut cu 22% în prima lună doar din treaba asta.
Trade-off-ul sincer: Unde se rupe filmul
Sună ideal, dar hai să vă zic unde m-am lovit cu capul de pragul de sus. Headless pe WooCommerce e genial pentru viteză brută, dar e un coșmar pentru funcționalități.
În secunda în care renunți la backend-ul de randare PHP din WordPress, pierzi accesul direct la ecosistemul de plugin-uri. Vrei Stripe? Nu mai dai click pe "Install". Trebuie să-ți scrii singur integrarea în Next.js, să gestionezi webhooks și să trimiți datele securizat. Vrei un plugin românesc de curierat (Sameday, Fan Courier) sau de facturare (SmartBill)? Mult noroc să le integrezi prin REST API sau GraphQL. Am pierdut vreo 3 săptămâni de development doar ca să refac logica de checkout, calculul taxelor de livrare și aplicarea cupoanelor complexe.
Fiecare mic feature pe care marketingul îl vrea instalat rapid devine un task de 10-15 ore de cod pentru tine.
Breakpoint-ul real de trafic
Când merită cu adevărat să faci pasul ăsta? Din experiența mea, dacă ai sub 50.000 de vizitatori unici pe lună, nu te atinge de headless. E risipă de bani și de timp. Un VPS bine configurat, cu LiteSpeed Cache, Redis și o temă curată scrisă în PHP o să ruleze impecabil la costuri minime.
Tranziția spre Next.js devine rentabilă abia când treci de 100.000 de vizite pe lună sau când ai spike-uri masive de trafic (de exemplu, campanii de tip Black Friday). Acolo unde PHP-ul ar începe să dea erori 502, Next.js servește paginile din CDN fără să clipească, iar baza de date de WordPress nici nu simte vizitatorii, fiind apelată doar la checkout.
Tu ai încercat să muți vreun WooCommerce pe headless sau preferi să storci ultimul strop de performanță din serverul PHP?