Verkkokauppa käyttää kolmikerrosarkkitehtuuria: Cloudflare/CDN, React SPA (Vite), oma REST backend – ei WooCommercea tai Shopifyta. Data paljastaa isoja ongelmia: katalogirajapinta hakee 500 tuotetta kerralla, layout ja kotisivurakenteet ovat hajallaan ja tuotetietomalli on epästandardi.

Create a landscape editorial hero image for this Studio Global article: Bạn là bộ NÃO LẬP KẾ HOẠCH của một code agent. Bạn không trực tiếp truy cập máy; ENGINE sẽ thực thi đúng một lệnh JSON bạn in ra và trả kết. Article summary: {"tool":"write","args":{"path":"PHAN TICH KIEN TRUC ECOMMERCE.md","content":" Phân tích kiến trúc và hướng viết lại nền tảng e commerce\n\n Phạm vi và mức độ chắc chắn\n\nBáo cáo này phân biệt rõ ba loại kết luận:\n\n Dữ. Topic tags: general web, workflow, code, python, javascript. Style: premium digital editorial illustration, source-backed research mood, clean composition, high detail, modern web publication hero. Use reference image context only for broad subject, composition, and topical grounding; do not copy the exact image. Avoid: logos, brand marks, copyrighted characters, real person likenesses, fake screenshots, UI text, readable text, watermarks, char
Tämä analyysi perustuu verkkokaupan julkisesti havaittaviin teknisiin piirteisiin: React/Vite SPA, REST-päätepisteet, Cloudflare-proxy, datan bootstrap-muuttujat selaimessa, päätepisteiden vastaukset ja tietokannan skeemat. Kaikki havainnot on tehty julkisesta liikenteestä; erityisiä sisäisiä tietoja (kuten lähdekoodia, tietokannan rakennetta tai palvelimen konfiguraatiota) ei ole käytetty.
Raportissa erotetaan kolme asiatyyppiä:
Backendin kieltä (Node, PHP, Python) ei voida varmuudella päätellä pelkistä REST-päätepisteiden nimistä ja JSON-vastauksista. Tarkempaan tunnistamiseen tarvittaisiin ylimääräisiä vastausotsikoita, evästeitä, virhemuotoja, CORS-käyttäytymistä ja stack traceja – käytännössä pääsy staging-ympäristöön tai deployment-manifestiin.
Sivusto käyttää kolmikerrosarkkitehtuuria:
Sivusto ei ole WooCommerce, Shopify tai WordPress headless. Tämä päätelmä perustuu API-pintaan, tuoteskeemaan, asetuksiin ja maksujen käsittelyyn, jotka eivät vastaa näiden alustojen oletuskonventioita.
Kun käyttäjä avaa /, /shop, /product/<slug> tai muun frontend-reitin, palvelin palauttaa aina saman app-shellin, jossa on id="root", scriptit /assets/index-<hash>.js ja mahdollisesti bootstrap-dataa muuttujissa window.__INITIAL_DATA__, window.__RC_HP, window.__RC_LAYOUT.
Tyypillinen toimintajakso:
#root-elementissä ja reititin lukee location.pathname valitakseen oikean komponentin.Tärkeä erottelu: window.__... -muuttujien olemassaolo ei todista palvelinpuolen renderöintiä (SSR). Jos HTML sisältää vain JSONia ja tyhjän rootin, kyseessä on bootstrap/esilataus asiakaspuolen renderöinnille (CSR), ei valmiiksi renderöityä tuotesisältöä. SSR on käytössä vasta, kun tuotteiden nimet, kuvaukset, hinnat ja metatiedot ovat HTML:ssä ennen JavaScriptin suoritusta.
Kiinteän app-shellin käyttö jokaisella reitillä luo nopean SPA-kokemuksen ensimmäisen latauksen jälkeen, mutta alkuperäispalvelimen on käsiteltävä fallback oikein: jos /product/olemassaolematon palauttaa app-shellin statuskoodilla 200, hakurobotti saattaa nähdä sen pehmeänä 404-virheenä. Google suosittelee, että reitit, jotka käyttävät asiakaspuolen renderöintiä, ilmoittavat virhetilanteesta joko noindex-tagilla tai ohjaamalla oikeaan 404-sivuun .
Päätepisteet osoittavat, ettei frontend sisällä katalogia suoraan bundleen:
GET /api/products?limit=500&active=1GET /api/products?q=...GET /api/products/<slug>GET /api/products/categoriesHyvä puoli: frontendin ja katalogin päivitys on eriytetty – tuotetietoja voi muuttaa tietokannassa ilman Vite-buildia. Tämä on selvä etu verrattuna tuotteiden koodaamiseen suoraan Reactissa.
Huono puoli: limit=500 viittaa siihen, että rajapinta on optimoitu pienelle katalogille. 16 tuotteella yksi pyyntö on nopea, mutta tuhansien tuotteiden kanssa payload, kyselyaika, selaimen muisti ja välimuistin tyhjennys kasvavat tarpeettomasti. Uudessa arkkitehtuurissa tulisi käyttää kursori-paginaatiota, kenttäprojektiota ja erillisiä päätepisteitä hakua ja suodatusta varten.
Nykyinen tuoteskeema on tuotekeskeinen eikä varianttikeskeinen. Esimerkkejä:
stock on tuotetasolla, vaikka variants-kenttä on olemassa.sizes, colors, genders sekä tuotetasolla että toistettuna varianteissa.XXL vs 2XL, ink navyInk Navyimage ja images saattavat osittain päällekkäin.type ja isbn viittaavat geneerisiin tai uudelleenkäytettyihin kenttiin.Tekninen ongelma: todellinen varasto ja SKU kuuluvat varianttiyhdistelmille (esim. Black/M vs Black/L), ei tuotteelle. Epästandardit option tekstit tekevät suodatuksesta, analytiikasta ja kuvien yhdistämisestä epävarmaa. Uudessa arkkitehtuurissa SKU, varasto ja optiot tulisi normalisoida varianttitasolle.
Asetus section_order ja objektit käynnistys-/sammutuspainikkeineen osoittavat, että kotisivu on CMS:n ohjaama koostumus, ei kovakoodattu komponenttijärjestys.
Mahdollinen renderöintiprosessi:
/api/homepage palauttaa konfiguraation eri osioista.section_order-taulukon.hero, trustbar, catshowcase, promo, products) yhdistetään React-komponenttiin.Vahvuus: markkinointi voi muokata osioiden järjestystä ja näkyvyyttä ilman frontend-julkaisua.
Heikkous: sekä ann että announcement-avaimet viittaavat päällekkäisiin tai siirtämättömiin tietoihin. Jos section_order, päälle/pois-painikkeet ja payload ovat kolme erillistä rakennetta, ne voivat epäsynkronoitua: avain on järjestyksessä mutta ilman payloadia, tai päälle/pois-tila on eri nimellä.
Uudessa arkkitehtuurissa käytettäisiin yhtä uniikkia listaa lohkoista, joista jokaisella on id, kind, enabled, position, payload ja schema_version. Tämä pitää järjestyksen, tilan ja datan samassa aggregaatissa ja vähentää synkronointivirheitä.
/api/layout sisältänee header/footer/navigation-konfiguraation, kun taas /api/public/settings sisältää brändi- ja kauppakäytännöt. Layoutin erottaminen kotisivusta on järkevää, koska header/footer näkyvät kaikilla reiteillä, kun taas kotisivun koostumus koskee vain etusivua.
Asetukset osoittavat avain-arvo- tai JSON-konfiguraatiota, joka ohjaa:
Hyvä puoli: hallinnointi on joustavaa – uuden avaimen lisääminen ei vaadi migraatiota.
Huono puoli: avain-arvo-muotoiltu konfiguraatio on vailla tyyppiturvaa, viiteavaimia ja kenttien välistä validointia. Esimerkiksi standard_handling_min ei saa olla suurempi kuin standard_handling_max; paypal_sandbox tulee olla totuusarvo; some-URLit tarvitsevat validointia. Uudessa arkkitehtuurissa tulisi käyttää skeemavalidointia ja erottaa julkinen konfiguraatio salaisesta.
Tietoja kuten tax_id, juridinen osoite, operatiivinen sähköposti tai muut ei-julkiset tiedot ei tulisi palauttaa julkisista asetuksista. PayPal-asiakastunnus voi olla julkinen, mutta asiakassalaisuus (client secret) kuuluu yksinomaan palvelimelle.
Mahdollinen maksun kulku:
POST /api/paypal/create-orderPOST /api/paypal/captureKriittistä: Palvelin ei saa luottaa price, discount, shipping tai total -kenttiin, jotka selain lähettää – ne tulee laskea palvelimella tuotetietojen ja sääntöjen perusteella.
Kaksi päätepistettä (create/capture) on oikea suunta, mutta laatu riippuu:
Nämä päätepisteet tekevät backendista todellisen verkkokauppasovelluksen, eivät pelkän katalogi-API:n.
POST /api/reviews/<id>POST /api/track
Tapahtumapäätepiste ei saa tallentaa mielivaltaista JSONia loputtomiin. Tapahtumien nimien ja ominaisuuksien tulee olla whitelistattuja, koko rajoitettu, PIT-tiedot poistettava tai hashattava ja pyynnöt ohjattava jonon kautta.
Node.js (Express/Fastify/NestJS): Looginen valinta, koska React/Vite-frontend on usein samassa TypeScript-ekosysteemissä. JSON-serialisointi ja middleware-toiminnot ovat luontevia, ja palvelimen window.__INITIAL_DATA__:n lisääminen on helppoa. Tämä on kuitenkin vain ekosysteemipäätelmä, ei todiste.
PHP (Laravel/Symfony): Mahdollista; Laravel tarjoaa helposti REST-ohjaimet, tietokantamigraatiot, jonot, sähköpostit, validoinnin ja voi palauttaa Vite-app-shellin catch-all-reitiltä. Cloudflare voi peittää kaikki X-Powered-By- tai evästemerkit.
Python (FastAPI/Flask/Django): Mahdollista; FastAPI/Flask tekee helppoa JSON REST-APIa, ja Vite-build voidaan tarjoilla Nginxistä tai staattisesta alkuperästä.
Johtopäätös: Todisteet eivät riitä back-end-kielen varmistamiseen. Luvallisia tapoja saada tietoa (omassa järjestelmässä) ovat deployment-tiedostot, prosessinhallinta, lukitiedosto, container-kuva, vastausotsikot (ilman Cloudflarea), evästeet, OpenAPI, virhekuori ja tietokanta-ajuri. Pelkistä URL-nimeämiskäytännöistä ei pidä vetää johtopäätöksiä.
Cache-Control: immutableStudio Global AI
Use this topic as a starting point for a fresh source-backed answer, then compare citations before you share it.
Verkkokauppa käyttää kolmikerrosarkkitehtuuria: Cloudflare/CDN, React SPA (Vite), oma REST backend – ei WooCommercea tai Shopifyta.
Verkkokauppa käyttää kolmikerrosarkkitehtuuria: Cloudflare/CDN, React SPA (Vite), oma REST backend – ei WooCommercea tai Shopifyta. Data paljastaa isoja ongelmia: katalogirajapinta hakee 500 tuotetta kerralla, layout ja kotisivurakenteet ovat hajallaan ja tuotetietomalli on epästandardi.
Suositus: vaihda puhdas CSR Next.js pohjaiseen SSR/ISR ratkaisuun, joka parantaa hakukonenäkyvyyttä, first load aikaa ja ylläpidettävyyttä.