Updated docs
This commit is contained in:
@@ -359,7 +359,11 @@ export default async function LocaleLayout({ children, params }) {
|
||||
|
||||
return (
|
||||
<html lang={locale}>
|
||||
{/* BEZ jawnego <head>! Sztywny <head> wypycha metadata do <body>
|
||||
(canonical/title poza head → crawlery ich nie widzą). Next zarządza
|
||||
<head> sam; MediaPreconnect w body, React 19 hoistuje link do head. */}
|
||||
<body>
|
||||
<MediaPreconnect /> {/* preconnect CDN, jeśli R2 */}
|
||||
<ConsentProvider texts={texts}>
|
||||
<main>{children}</main>
|
||||
<CookieBanner />
|
||||
@@ -392,6 +396,11 @@ const pageMetadata = createPageMetadata({
|
||||
baseUrl: process.env.NEXT_PUBLIC_SERVER_URL,
|
||||
})
|
||||
|
||||
// ISR — cache strony z gotowym <head>. Eliminuje race condition streamingu
|
||||
// metadata (canonical/title zawsze w head, nie w body). TTFB ~20ms, brak 503.
|
||||
// Redaktor widzi zmiany po rewalidacji — patrz seo.md (ISR a treść z panelu).
|
||||
export const revalidate = 3600
|
||||
|
||||
export async function generateMetadata({ params }): Promise<Metadata> {
|
||||
const { locale, slug } = await params
|
||||
return pageMetadata({ payload: await getCachedPayload(), locale, slug })
|
||||
@@ -408,6 +417,8 @@ export default async function Page({ params, searchParams }) {
|
||||
|
||||
- brak slug (`/pl`) → home przez System Pages (nie hardkod slug)
|
||||
- slug (`/pl/o-nas`) → resolveRoute po slug w danym locale
|
||||
- **ISR (`revalidate`)** → metadata zawsze w `<head>` (nie body), szybki TTFB.
|
||||
KRYTYCZNE dla SEO — patrz seo.md (metadata w head).
|
||||
- `depth: 2` → relacje w blokach (form) się populują
|
||||
|
||||
## 11. Metadata / SEO (szczegóły)
|
||||
@@ -486,10 +497,15 @@ przypisanie strony-archiwum w System Pages.
|
||||
```ts
|
||||
// app/sitemap.ts
|
||||
export { sitemap as default } from '@/lib/content'
|
||||
export const dynamic = 'force-dynamic' // KONIECZNE dla deployu kontenerowego
|
||||
// app/robots.ts
|
||||
export { robots as default } from '@/lib/content'
|
||||
```
|
||||
|
||||
`force-dynamic` w sitemap.ts jest wymagane przy deployu w kontenerze (Coolify/
|
||||
Docker) — bez niego build próbuje prerenderować sitemap i łączy się z bazą,
|
||||
której kontener budujący nie widzi → build pada. Szczegóły: [deployment.md](./deployment.md).
|
||||
|
||||
---
|
||||
|
||||
## Kiedy coś nie działa
|
||||
|
||||
Reference in New Issue
Block a user