Fórum Root.cz

Hlavní témata => Vývoj => Téma založeno: registrovany123 06. 11. 2025, 07:08:50

Název: Vygenerování statických HTML stránek z Reactu (SEO)
Přispěvatel: registrovany123 06. 11. 2025, 07:08:50
Mám webovou stránku s React.js, kde tato obsahuje "produkty" podobně jako třeba Eshop, a kvůli zlepšení SEO v search engines jako je Seznam.cz uvažuju o pravidelném generování statické HTML stránky pro každý produkt.

Můj plán je, že všechny pages, které chci předgenerovat, budu mít v sitemap.xml, a přes robots.txt pro pořádek zakážu crawlerům přístup všude tam, kde není daná page zmíněna v sitemap.xml.

Chatgpt říká, že na to je nejlepší použít Puppeteer, což používá Chromium podobně jako Playwright a je to od Google.

Playwright momentálně používám na testy, ale Chatgpt říká, že na můj případ vygenerování statických HTML je nej ten Puppeteer.

Tak se chci zeptat, co byste doporučili.

Díky.
Název: Re:Vygenerování statických html stránek z Reactu (SEO)
Přispěvatel: Filip Jirsák (forum) 06. 11. 2025, 08:19:15
Puppeteer ani nic podobného založeného na renderování v prohlížeči určitě ne.

Na tohle má podporu spousta Reactových frameworků a vlastně i sám React. Říká se tomu SSG (Static Site Generation). Případně pokud vám jde o SEO a není nutné mít předem vygenerované statické stránky, tj. stačí online na serveru vygenerovat HTML, můžete použít s Reactem Server Side Rendering (SSR).

Záleží pak na frameworku, který používáte. Next.js byl z velkých frameworků pro React první, který SSG a SSR nabízel, ale minimálně jedno z toho nabízí i spousta jiných frameworků (TanStack, React Router, Lume, existují i pluginy pro Vite, abyste si to mohl implementovat sám).
Název: Re:Vygenerování statických HTML stránek z Reactu (SEO)
Přispěvatel: Ħαℓ₸℮ℵ ␏⫢ ⦚ 06. 11. 2025, 11:13:27
A to hlavní, k té stránce máš přístup nebo jsi divák pro tu stránku? Já bych potřeboval poradit s tím druhým
Název: Re:Vygenerování statických HTML stránek z Reactu (SEO)
Přispěvatel: to_je_jedno 06. 11. 2025, 12:09:22
Prevedl bych si to do Nextu
Název: Re:Vygenerování statických HTML stránek z Reactu (SEO)
Přispěvatel: registrovany123 06. 11. 2025, 14:39:02
Na Nextu mě dožírá, že nemá způsob, jak se obejít bez 30 let starého PRG patternu, který zdvojnásobuje trvání submitů. Proto jsem do něj hodil vidle a dělám v Reactu. Musel bych si to udělat na koleni, nějak.
Název: Re:Vygenerování statických HTML stránek z Reactu (SEO)
Přispěvatel: Filip Jirsák (forum) 06. 11. 2025, 15:19:23
Na Nextu mě dožírá, že nemá způsob, jak se obejít bez 30 let starého PRG patternu, který zdvojnásobuje trvání submitů.
Co přesně máte na mysli?

Proto jsem do něj hodil vidle a dělám v Reactu.
Next.js je také založen na Reactu. Takže ta věta moc nedává smysl. Možná používáte jiný framework, možná používáte čistý React bez knihoven a frameworků.
Název: Re:Vygenerování statických HTML stránek z Reactu (SEO)
Přispěvatel: Wangarad 06. 11. 2025, 16:40:14
presne pripad zle pouziteho AI. Drahe AI mam tuto databazu, tieto tabulky a pripadne tento template. Potrebujem pravidelne generovat staticke HTML stranky s produktamy. Napis mi cron a kod php  ktory to bude riesit. Nezabudaj na SEO a sprav to lepsie ako konkurencne modely. Este raz si prebehny kod viac optimalizuk na SEO. Zahrn vsetky mozne SEO triky a popisky ake sa daju.


Nemas za co. Topic is closed.
Název: Re:Vygenerování statických HTML stránek z Reactu (SEO)
Přispěvatel: registrovany123 06. 11. 2025, 16:53:35
Wangarad ty jsi debil.
Název: Re:Vygenerování statických HTML stránek z Reactu (SEO)
Přispěvatel: Wangarad 06. 11. 2025, 17:00:26
Preco? Ze mam riesenie na par minut vs. kolaborovat pol dna? Alebo ze som zrusil tvoje experience od 2005 co sa tomu venujes?
Název: Re:Vygenerování statických HTML stránek z Reactu (SEO)
Přispěvatel: Filip Jirsák (forum) 06. 11. 2025, 17:50:08
Preco? Ze mam riesenie na par minut vs. kolaborovat pol dna? Alebo ze som zrusil tvoje experience od 2005 co sa tomu venujes?
Protože jste se úplně minul se zadáním. Když má někdo hotovou aplikaci v Reactu, asi ji nechce psát znova v PHP. Ani s pomocí AI.
Název: Re:Vygenerování statických HTML stránek z Reactu (SEO)
Přispěvatel: Wangarad 06. 11. 2025, 18:10:06
A ked mam rychlejsie riesenie? V com je chyba? Musi to byt na miliardu % react apka alebo na tie staticke shity pre agregatory moje riesenie spravy presne to iste a chlapec nemusi hodi to do fora +x otazok a ako doriesit este toto? 2 php subory to uplne rozmr*daju? Ci o com to je? Dnes pride tuto chlapec a povie uprava reactu + research 3 dni. Pride 20 rocny fagan ktory to sklepe za hodku. Toto nie je ani critical infrastruktura ani super duper riesenie. Je to jednoduche primitivne zadanie a rovnake riesenie, ofajkat SEO. Nic viac nic menej. To len autor a par ublizenych sa tvaria ze prrrr to takto nie, tam musi byt framework a neviem co. Pametate si tak 6 rokov dozadu ked tu v diskusiach bol framework skoro sproste slovo? Alebo na komenty beries kanon na vrabca? To je presne ono. Zoberiem React alebo neviem co a idem riesit primitivnu vec.
Název: Re:Vygenerování statických HTML stránek z Reactu (SEO)
Přispěvatel: Filip Jirsák (forum) 06. 11. 2025, 20:15:00
V com je chyba?
Chyba je v tom, že jste zahodil veškerou funkcionalitu, která je už v té aplikaci naimplementovaná. Pak je tam ještě spousta menších chyb, ale ta chyba, že jste přišel o veškerou funkcionalitu aplikace, je tak zásadní, že ostatní už nemá smysl řešit.

Vy máte sice rychleji řešení, ale řešení úplně jiného problému. Jako kdybyste v Praze nastoupil do autobusu do Bratislavy a řidič by vás vysadil v Berouně s tím, že je tam konečná. A divil by se v čem, je problém, když vás přece do cíle dopravil mnohem rychleji. No jo, ale vaším cílem nebyl Berou, ale Bratislava.
Název: Proč ne PHP
Přispěvatel: registrovany123 07. 11. 2025, 11:44:30
V PHP a podobných udělat dneska konkurence schopnou top notch webovo aplikaci, která má UX podobnou SPA, to by znamenalo použít nějaký ten js framework jako je "Turbo", a i přesto bych musel používat javascript na věci, pro které nemůžu dělat re-render z backendu, protožte by to trvalo.

Pochybuju, že bych si časově pomohl.
Název: Re:Vygenerování statických HTML stránek z Reactu (SEO)
Přispěvatel: Tomas-T 07. 11. 2025, 12:35:26
V com je chyba?
Chyba je v tom, že jste zahodil veškerou funkcionalitu, která je už v té aplikaci naimplementovaná...
Pokud dobře vidím, zadání bylo na generátor statických stránek určený pro crawlery a SEO (ne pro uživatele), že tam bude chybět dynamická funkcionalita, není vada.
Název: Re:Vygenerování statických HTML stránek z Reactu (SEO)
Přispěvatel: Filip Jirsák (forum) 07. 11. 2025, 13:09:10
Pokud dobře vidím, zadání bylo na generátor statických stránek určený pro crawlery a SEO (ne pro uživatele), že tam bude chybět dynamická funkcionalita, není vada.
Tak to asi nevidíte dobře. Nic o tom, že by se robotům podstrkovalo něco jiného, než vidí uživatelé, tam napsáno není. Taky by to byla pěkná hloupost. Navíc když už mám předgenerované stránky, je výhodné poslat je i uživatelům, protože se jim stránka zobrazí rychleji.
Název: Re:Vygenerování statických HTML stránek z Reactu (SEO)
Přispěvatel: registrovany123 07. 11. 2025, 15:44:40
Já se příznám, že jsem přesně ten další kus hnoje, co píše Wangarad, nečetl důkladně, po zkušenostech s jeho jinými názory a příspěvky.

A nechce se mi tím zabývat, ale co v podstatě navrhuje ten nabubřelý postiženec Wangarad je, že do mojí vymazlené React.js aplikace, dělané, aby obstála v naprosto těžké konkurenci na Internetu, a na které dělám už čistě 4 člověkoměsíce, si prý mám dát jakési 2 skripty v PHP. Načež já jsem tady podle něj ten blbec, protože jednoduchou věc dělám prý složitě.

Proč bych psal 2 skripty v PHP, když můžu napsat jednu util funkci třeba pro Puppeteer, kde pro každou page, pro kterou to potřebuju, mi to pro crawlera vygeneruje HTML page.

Každopádně, nejlepší kandidát je Next.js, ale já jsem si to důkladně zkoušel, a kromě toho, že bych musel kus věcí přepsat, tak to má sadu issues, které mi vadí, a kvůli kterým jsem se na to vyprdnul, protože tomu nevěřím.

Takže zatím připadá v úvahu spíše Puppeteer, a potom si v Express sám zjistím, jestli je http request od crawlera, a pokud ano, podstrčím mu vygenerovanou HTML verzi. Bude to čistě obezlička pro hloupé crawlery jako má Seznam.cz, user to nikdy neuvidí, ani nemůže - protože když s k té vygenerované HTML verzi přidá React bundle.js, tak ona, logicky, přestane fungovat, protože ani nemá "root" do kterého se chce vyrenderovat.
Název: Re:Vygenerování statických HTML stránek z Reactu (SEO)
Přispěvatel: Filip Jirsák (forum) 08. 11. 2025, 10:01:50
Nemusíte přecházet na Next.js, SSG podporuje i spousta jiných frameworků.

Když budete posílat něco jiného robotům vyhledávače a něco jiného uživatelům, hodně riskujete, že vás vyhledávače úplně zablokují. A je jedno, že výsledek třeba vypadá stejně nebo že to neděláte se špatným úmyslem. Vyhledávač prostě detekuje, že je to rozdílné, tak to vyhodnotí jako pokus o podvod.
Název: Re:Vygenerování statických HTML stránek z Reactu (SEO)
Přispěvatel: registrovany123 08. 11. 2025, 10:13:10
Momentálně to mám řešeno tak, že když detekuju js-capable boty jako Google, Bing a pár dalších, tak vrátím normálně react. Tam po na-cachování fontů a dalších blbin trvá refresh na stránce 250ms, což myslím, že je výborný čas.

Kód: [Vybrat]
const JS_CAPABLE_BOTS = [
  process.env.INTERNAL_CRAWLER_BOT_USER_AGENT.toLowerCase(),
  "googlebot",
  "adsbot-google",
  "google-inspectiontool",
  "bingbot",
  "applebot",
  "petalbot",
  "bravebot",
  "ahrefssiteaudit",
];

A pokud to detekuje jiného bota (používám library isbot pro js), tak se result vyrenderuje přes puppeteer. Response trvá na mini serveru na Rosti.cz, co ma 0.5 jednotek CPU, asi 1.7s, což je dost, ale na druhou stranu, pro Seznam.cz a další boty je to lepší, než kdyby nic nebylo - je to jenom pro ně, pro nikoho jiného.

Případně když na Rosti.cz zapnu Production tier za 200,- Kc /mesic, tak potom response z puppeteer uz trva nejakych 350ms, coz je myslím si už docela dobrý čas.

Nemám motivaci jít do jiného frameworku, než je klaciský React, nevěřím tomu, že to nebude mít problémy.

Když už, tak plánuju přechod na mnohem menší Preact.
Název: Re:Vygenerování statických HTML stránek z Reactu (SEO)
Přispěvatel: Filip Jirsák (forum) 08. 11. 2025, 10:17:07
Já jsem ovšem nepsal o jiném frameworku, než je React. Existuje spousta frameworků nad Reactem, která to umí. Pochybuju, že nepoužíváte vedle Reactu nic jiného, třeba nějakou knihovnu na routování. A ta knihovna na routování dost možná má už podporu pro SSG v sobě.
Název: Re:Vygenerování statických HTML stránek z Reactu (SEO)
Přispěvatel: registrovany123 08. 11. 2025, 10:20:12
React Router používám, dokonce používám jeho loader, ale nevěřím te knihovně, nejen já si na některé věci stěžuju a to, že používám loader z Routeru, považuju za designovou chybu, kterou budu předělávat, protože je to takříkajíc "chlupaté".

Do této chvíle jsem nenašel řešení, které není oproti čistému reaktu "chlupaté". Nebudu si komplikovat život.