Astro SSR vollständig konfigurieren: SSR in 3 Schritten aktivieren und Technologie-Entscheidungen klären

Ihr Astro-Blog läuft blitzschnell, Lighthouse 95+ – und plötzlich sagt der Chef: „Wir brauchen Login.“ Statische Site und Nutzer-Login? In der Doku warten SSR, SSG, Hybrid, Adapter – und alles wirkt auf einmal.
So ging es mir beim ersten Astro-SSR-Kontakt. Astro wirbt mit „schnell“ – wird SSR langsamer? Vercel, Netlify, Node.js – welcher Adapter? Was bedeuten output und prerender?
SSR in Astro ist weniger komplex, als es klingt. Dieser Artikel erklärt klar: wann SSR statt SSG nötig ist, wie Sie Adapter schnell konfigurieren und SSR plus SSG im Hybrid-Modus kombinieren. Danach entscheiden Sie selbstständig und sind in etwa 30 Minuten startklar.
Kapitel 1: SSR-Grundlagen und Technologie-Entscheidung
Wann brauchen Sie SSR statt SSG?
Die einfachste Regel: Steht der Inhalt beim Build fest – oder kann er sich bei jedem Besuch ändern?
SSG (Static Site Generation) ist wie vorbereitete Menüs: morgens gekocht, beim Gast sofort serviert – sehr schnell. Blogartikel, Produktseiten, Über uns – wenig Änderung, SSG passt.
SSR (Server-Side Rendering) ist à la carte: nach Bestellung frisch zubereitet. „Willkommen zurück, Max“, Echtzeitkurse, Warenkorbmenge – pro Nutzer unterschiedlich, daher SSR.
Trifft einer der folgenden fünf Fälle zu, sollten Sie SSR prüfen:
1. Authentifizierung und personalisierte Inhalte
Typisch: Login. Beim Build wissen Sie nicht, wer sich anmeldet. Bei einer Lernplattform zeigte die Startseite „Weiterlernen: Lektion 5“ – SSR aus dem individuellen Fortschritt.
2. Echtzeitdaten
Wetter, Börse, Sport-Ergebnisse – minütliche Updates. Nicht jede Minute neu bauen. Mit SSR holen Sie bei jedem Besuch aktuelle Daten.
3. Datenbankabfragen
Produktsuche: jedes Keyword andere Ergebnisse – alle Kombinationen vorab unmöglich. SSR: Suche in Echtzeit gegen die DB.
4. API-Routen
Formulare, Uploads, Drittanbieter-APIs brauchen Backend-Logik. Astro SSR erlaubt API-Routen (src/pages/api/xxx.js) ohne separaten Server.
5. A/B-Tests und personalisierte Empfehlungen
Inhalt nach Geo, Zeit, Verhalten – wie Startseiten großer Marktplätze. Diese Personalisierung braucht SSR.
Manche fragen: „Kann die Blog-Detailseite SSR?“ Ja – aber unnötig. Fester Artikelinhalt, SSG als statisches HTML über CDN – schneller und günstiger. SSR ist kein Selbstzweck.
Hybrid-Modus: beides kombinieren
Seit Astro 2.0: statische Seiten SSG, dynamische SSR. Beispiel E-Commerce:
- Startseite, About, Hilfe → SSG (schnelles Laden)
- Login, Nutzerbereich, Warenkorb → SSR (dynamisch)
- Produktdetail → SSG (fester Inhalt)
- Suchergebnisse → SSR (Live-Abfrage)
Statische Geschwindigkeit bleibt, dynamische Funktionen funktionieren. Ein Bekannter nutzt SSG für Liste und Artikel, SSR für Kommentare – Lighthouse weiterhin 95+.
Kapitel 2: Schnellstart – SSR in 3 Schritten
Astro SSR von null (Node.js-Adapter)
Nach der Entscheidung für SSR starten wir mit dem Node.js-Adapter – universell für Self-Hosting oder VPS.
Schritt 1: Adapter per Befehl installieren
Im Projektroot:
npx astro add node
Das erledigt automatisch:
- Installation von
@astrojs/node - Anpassung von
astro.config.mjs - Update der
package.json-Abhängigkeiten
Grüne Häkchen in der Konsole = Erfolg. Manuell (z. B. feste Version):
npm install @astrojs/node
Dann die Config manuell anpassen (nächster Schritt).
Schritt 2: Konfigurationsdatei anpassen
In astro.config.mjs (nach Auto-Setup oft schon vorhanden):
// astro.config.mjs
import { defineConfig } from 'astro/config';
import node from '@astrojs/node';
export default defineConfig({
output: 'server', // SSR-Modus
adapter: node({
mode: 'standalone' // Standalone-Server
}),
});
Wichtige Optionen:
output:
'static'(Standard): alles SSG, reines HTML'server': alles SSR, pro Request dynamisch'hybrid': Standard SSG, pro Seite SSR möglich (empfohlen)
mode:
'standalone': eigener Node.js-Server von Astro'middleware': Middleware für Express, Koa usw.
Meist standalone – der Astro-Server reicht. Bestehendes Express-Backend: middleware.
Schritt 3: Build und Start
npm run build
Unter dist/ erscheint server/entry.mjs – Einstieg für SSR.
Server starten:
node ./dist/server/entry.mjs
Standard: http://localhost:4321. Alle Seiten laufen dann per SSR.
Entwicklung
Ohne jedes Mal zu bauen:
npm run dev
Dev-Server unterstützt SSR mit Hot Reload.
Häufige Probleme
-
Port belegt – Umgebungsvariable setzen:
PORT=3000 node ./dist/server/entry.mjs -
Adapter-Modul fehlt –
@astrojs/nodeinstalliert?npm installerneut ausführen -
404 – Dateien unter
src/pages/und Astro-Routing prüfen; SSR folgt denselben Regeln
SSR-Setup ist wirklich so kurz – beim ersten Mal unter fünf Minuten bis zum Lauf. Für Vercel oder Netlify gibt es eigene Adapter – Kapitel 3.
Kapitel 3: Adapter im Detail
Vercel, Netlify, Cloudflare – Auswahl
Hosting auf Vercel, Netlify oder Cloudflare? SSR wird einfacher – offizielle Adapter, Deploy mit wenig Aufwand.
Vercel-Adapter – Serverless
Vercel: großzügiges Free-Tier, einfache Konfiguration:
npx astro add vercel
Config-Beispiel:
// astro.config.mjs
import { defineConfig } from 'astro/config';
import vercel from '@astrojs/vercel/serverless';
export default defineConfig({
output: 'server',
adapter: vercel(),
});
Vercel-Besonderheit: ISR (Incremental Static Regeneration)
Erster Besuch: SSR; danach Cache für eine Zeit – erneut generieren nach Ablauf.
adapter: vercel({
isr: {
expiration: 60, // Cache 60 Sekunden
},
}),
News-Detail: minütliches Update reicht – ISR verbindet SSR-Flexibilität mit SSG-Geschwindigkeit.
Vercel-Deploy:
- Adapter konfigurieren
- Code nach GitHub pushen
- Projekt in Vercel importieren
- Build:
npm run build(automatisch erkannt) - Deploy
Netlify-Adapter – Edge Functions
Beliebt für statische Sites plus dynamische Features:
npx astro add netlify
// astro.config.mjs
import { defineConfig } from 'astro/config';
import netlify from '@astrojs/netlify';
export default defineConfig({
output: 'server',
adapter: netlify({
edgeMiddleware: true, // Edge-Middleware
}),
});
edgeMiddleware
Middleware-Logik (Auth, Redirects) am Edge – schnellere Antwort. Nützlich bei geo-basierten Features (Sprache nach Standort).
Netlify-Redirects
/old-page → /new-page per _redirects im Projektroot:
/old-page /new-page 301
Nach Deploy aktiv – ohne Codeänderung.
Cloudflare-Adapter – globales CDN
Weltweite Nutzer: Cloudflare Workers in 300+ Rechenzentren, niedrige Latenz.
npx astro add cloudflare
// astro.config.mjs
import { defineConfig } from 'astro/config';
import cloudflare from '@astrojs/cloudflare';
export default defineConfig({
output: 'server',
adapter: cloudflare(),
});
Cloudflare-Einschränkungen
Workers ≠ vollständiges Node.js – z. B. kein fs. Projekte mit solchen APIs: Cloudflare prüfen.
Adapter-Vergleich
| Adapter | Einsatz | Stärken | Grenzen |
|---|---|---|---|
| Node.js | Self-Hosting, VPS | Volle Kontrolle | Betrieb, Kosten |
| Vercel | Projekte, kleine Teams | Zero-Config, ISR | Free-Limits (100 GB/Monat) |
| Netlify | Statik + Dynamik | Edge Functions | Build-Minuten (Free 300/Monat) |
| Cloudflare | Global, niedrige Latenz | Edge, günstig | Workers-Umgebung, Node-APIs teilweise fehlend |
Empfehlungen:
- Blog, Docs: Vercel oder Netlify – Free reicht oft
- E-Commerce, SaaS: Vercel (ISR) oder Node.js Self-Hosting
- International: Cloudflare
- Enterprise: Node.js Self-Hosting (Datenschutz, Kontrolle)
Kein absolutes Urteil – abhängig von Anforderungen und Budget. Eigener Blog auf Vercel, Kunden-Sites Self-Hosted – beides funktioniert gut.
Kapitel 4: Hybrid-Rendering in der Praxis
SSR und SSG in einem Projekt
Nach reiner SSR-Konfiguration der Kern: Hybrid-Modus – SSG-Geschwindigkeit plus SSR-Flexibilität.
Hybrid konfigurieren
output auf 'hybrid':
// astro.config.mjs
import { defineConfig } from 'astro/config';
import node from '@astrojs/node';
export default defineConfig({
output: 'hybrid', // Standard SSG, SSR nach Bedarf
adapter: node(),
});
Danach sind alle Seiten standardmäßig SSG – SSR pro Seite aktivieren.
Rendering pro Seite
SSR für eine Seite – im Frontmatter:
// src/pages/dashboard.astro (SSR)
---
export const prerender = false; // Kein Pre-Render → SSR
const user = Astro.cookies.get('user');
---
<h1>Willkommen zurück, {user?.name}</h1>
<p>Sie haben {user?.notifications} ungelesene Nachrichten</p>
prerender = false: nicht beim Build, sondern bei Request generieren.
Bei output: 'server' (alles SSR) einzelne Seite statisch:
// src/pages/about.astro (SSG)
---
export const prerender = true; // Beim Build generieren
---
<h1>Über uns</h1>
<p>Fester Inhalt – vorab gebaut, schneller Zugriff.</p>
Kurzüberblick (nicht verwechseln):
| output | Standard | Einzelne Seite ändern |
|---|---|---|
'hybrid' | SSG | export const prerender = false → SSR |
'server' | SSR | export const prerender = true → SSG |
Merksatz: hybrid = SSG zuerst, server = SSR zuerst.
Praxis: Blog plus Nutzersystem
Struktur:
src/pages/
├── index.astro // Start (SSG)
├── about.astro // Über uns (SSG)
├── blog/
│ ├── [slug].astro // Artikel (SSG)
│ └── index.astro // Liste (SSG)
├── login.astro // Login (SSR)
├── dashboard.astro // Dashboard (SSR)
└── api/
└── comments.js // Kommentar-API (SSR)
Config:
// astro.config.mjs
export default defineConfig({
output: 'hybrid',
adapter: vercel(),
});
Statische Seite (Standard SSG):
// src/pages/blog/[slug].astro
---
// Kein prerender – in hybrid = SSG
import { getCollection } from 'astro:content';
export async function getStaticPaths() {
const posts = await getCollection('blog');
return posts.map(post => ({
params: { slug: post.slug },
props: { post },
}));
}
const { post } = Astro.props;
---
<article>
<h1>{post.data.title}</h1>
<div set:html={post.body} />
</article>
Dynamische Seite (SSR):
// src/pages/dashboard.astro
---
export const prerender = false;
const token = Astro.cookies.get('token')?.value;
if (!token) {
return Astro.redirect('/login');
}
const user = await fetch(`https://api.example.com/user`, {
headers: { Authorization: `Bearer ${token}` }
}).then(res => res.json());
---
<div>
<h1>Willkommen, {user.name}</h1>
<p>E-Mail: {user.email}</p>
<p>Letzter Login: {user.lastLogin}</p>
</div>
API-Route (automatisch SSR):
// src/pages/api/comments.js
export async function POST({ request }) {
const { articleId, content } = await request.json();
await db.comments.insert({
articleId,
content,
createdAt: new Date(),
});
return new Response(JSON.stringify({ success: true }), {
status: 200,
headers: { 'Content-Type': 'application/json' }
});
}
export async function GET({ url }) {
const articleId = url.searchParams.get('articleId');
const comments = await db.comments.findMany({
where: { articleId },
orderBy: { createdAt: 'desc' }
});
return new Response(JSON.stringify(comments), {
headers: { 'Content-Type': 'application/json' }
});
}
Vorteile:
- Statische Seiten – Lighthouse 95+, CDN
- Dynamische Seiten – individuelle Daten pro Nutzer
- API-Routen – Backend ohne separaten Server
- Kurze Build-Zeit – nur statische Seiten pre-rendern
Ein Projekt: 50 Blogartikel plus Nutzersystem – Build ~20 Sekunden, statische Seiten sofort, dynamische Antwort oft unter 100 ms. Hybrid als Best Practice.
Kapitel 5: FAQ und Best Practices
Fallstricke bei der SSR-Konfiguration
Typische Probleme und Lösungen aus der Praxis.
Problem 1: Astro.clientAddress is only available when using output: 'server'
Ursache: Astro.clientAddress genutzt, aber output noch 'static'.
Lösung:
// astro.config.mjs
export default defineConfig({
output: 'server', // oder 'hybrid'
adapter: node(),
});
Astro.clientAddress, Astro.cookies, Astro.redirect() – nur im SSR-Modus.
Problem 2: 404 nach Deploy, lokal OK
Ursache: falscher Adapter oder Build-/Output-Einstellungen der Plattform.
Lösung:
Vercel:
- Build:
npm run build - Output:
.vercel/output(automatisch) - Routing nicht manuell in
vercel.json– Astro überlässt
Netlify:
- Build:
npm run build - Publish:
dist(statisch) oder.netlify(SSR) - Bei 404
netlify.tomlprüfen:[build] command = "npm run build" publish = "dist"
Problem 3: SSR-Seite langsam (> 2 s)
Ursache: schwache Server-Hardware oder langsame DB-Queries.
Lösung:
-
Caching:
// src/pages/api/news.js export async function GET() { const cached = await redis.get('news'); if (cached) { return new Response(cached, { headers: { 'Content-Type': 'application/json', 'Cache-Control': 'public, max-age=60' } }); } const news = await fetchNewsFromDB(); await redis.set('news', JSON.stringify(news), 'EX', 60); return new Response(JSON.stringify(news), { headers: { 'Content-Type': 'application/json', 'Cache-Control': 'public, max-age=60' } }); } -
DB optimieren: Indizes, weniger JOINs, nur benötigte Felder
-
ISR auf Vercel:
adapter: vercel({ isr: { expiration: 300 } }),
Problem 4: Umgebungsvariablen im Client nicht verfügbar
Ursache: Astro trennt Server- und Client-Env.
Lösung:
Server (SSR, API):
const secret = import.meta.env.SECRET_KEY;
Client (Browser):
const apiUrl = import.meta.env.PUBLIC_API_URL; // Prefix PUBLIC_
.env:
SECRET_KEY=abc123
PUBLIC_API_URL=https://api.example.com
Problem 5: adapter.setApp is not a function
Ursache: inkompatible Astro- und Adapter-Versionen.
Lösung:
npm update astro @astrojs/node
# oder explizit latest
npm install astro@latest @astrojs/node@latest
Astro und Adapter möglichst auf kompatiblen Stand halten.
Best Practices
- Standard Hybrid – außer jede Seite braucht SSR
- SSR gezielt – nur
prerender = falsewo nötig - Assets in public/ – CDN, nicht SSR
- Cache/ISR für selten wechselnde dynamische Listen
- Env trennen – Secrets serverseitig,
PUBLIC_für Client - Monitoring – Vercel Analytics oder GA für SSR-Latenz
Fazit
Kern in drei Sätzen:
1. SSR ist kein Allheilmittel – gezielt einsetzen
Statische Seiten SSG, dynamische SSR – Hybrid für die meisten Projekte. Ganzer Blog auf SSR verschlechtert oft die Performance – Blog-Inhalt unverändert, SSG über CDN schneller.
2. Adapter nach Deploy-Plattform – Konfiguration ist einfach
Vercel/Netlify/Cloudflare: npx astro add [platform]. Self-Hosting: npx astro add node in Minuten. Praxis schlanker als die Doku vermuten lässt.
3. Hybrid verbindet beides
Astros Stärke: statische Seiten mit 95+ Lighthouse, dynamische mit Personalisierung – Build-Zeit und Kosten im Griff. Hybrid ist meine erste Wahl.
Nächste Schritte
- Ausprobieren:
npx astro add node– SSR in fünf Minuten - Bedarf klären: welche Seiten dynamisch, welche statisch
- Vertiefen: Server Islands – SSR-Komponenten in SSG-Seiten
Bei Problemen: Astro Discord – schnelle Antworten, hilfsbereite Community.
Nicht überoptimieren: unter ~10.000 PV/Tag reicht oft eine statische Site – SSR erhöht Komplexität ohne Nutzen. Technologie dient dem Business.
Viel Erfolg bei der Konfiguration – Fragen gerne in den Kommentaren!
Astro SSR vollständig konfigurieren: Serverseitiges Rendering in 3 Schritten aktivieren
Von SSR/SSG-Unterschieden über Vercel/Netlify/Node.js-Adapter bis zur Hybrid-Strategie – in 30 Minuten vom Einstieg zur Praxis
⏱️ Estimated time: 30 min
- 1
Step 1: SSR vs. SSG verstehen: Wann SSR nötig ist
Entscheidungskriterium:
SSG (Statische Seitengenerierung)
• Inhalt ist beim Build festgelegt
• Blogartikel, Produktseiten, Über-uns-Seiten
• Diese Inhalte ändern sich selten – SSG passt perfekt
SSR (Serverseitiges Rendering)
• Kann sich bei jedem Besuch ändern
• Nach dem Login: „Willkommen zurück, Max“
• Echtzeit-Aktienkurse, Warenkorbmenge
• Jeder Nutzer sieht etwas anderes – SSR ist Pflicht
5 Szenarien, in denen SSR zwingend ist:
1. Authentifizierung und personalisierte Inhalte
• Typisches Beispiel: Login
• Beim Build wissen Sie nicht, wer sich anmeldet und welcher Name erscheint
• Lernplattform-Startseite: „Weiterlernen: Lektion 5“
• Muss SSR sein – dynamisch aus dem Lernfortschritt des Nutzers
2. Echtzeitdaten
• Wetter, Börsenkurse, Sport-Ergebnisse
• Ändern sich minütlich
• Sie bauen nicht jede Minute neu
• Mit SSR holen Sie bei jedem Besuch die neuesten Daten
3. Datenbankabfragen
• Produktsuche im E-Commerce
• Jedes Suchwort liefert andere Ergebnisse
• Alle Kombinationen vorab zu generieren ist unmöglich
• SSR: Suche in Echtzeit gegen die Datenbank
4. API-Routen
• Formular-Submit, Uploads, Drittanbieter-APIs
• Brauchen Backend-Logik
• Astro SSR unterstützt API-Routen unter src/pages/api/xxx.js
• Kein separater Backend-Server nötig
5. A/B-Tests und personalisierte Empfehlungen
• Inhalt je nach Geo, Zeit und Verhalten
• Startseiten wie bei großen Marktplätzen – jeder sieht andere Empfehlungen
• Diese Personalisierung erfordert SSR - 2
Step 2: SSR in 3 Schritten: Adapter installieren und konfigurieren
Schritt 1: Adapter installieren
Vercel-Adapter:
• Befehl: npx astro add vercel
• Für Deployment auf Vercel
Netlify-Adapter:
• Befehl: npx astro add netlify
• Für Deployment auf Netlify
Node.js-Adapter:
• Befehl: npx astro add node
• Für Self-Hosting oder Docker
Schritt 2: astro.config.mjs konfigurieren
• output: 'server' (SSR-Modus)
• Adapter-Konfiguration:
import vercel from '@astrojs/vercel/serverless';
export default {
output: 'server',
adapter: vercel()
}
Schritt 3: Auf der passenden Plattform deployen
Vercel:
• GitHub-Repo verbinden
• Vercel erkennt Astro-SSR automatisch
• Ein-Klick-Deploy
Netlify:
• GitHub-Repo verbinden
• Functions-Verzeichnis konfigurieren
• Automatisches Deploy
Node.js:
• npm run build erzeugt dist/
• node dist/server/entry.mjs startet den Server
• Oder Deployment per Docker - 3
Step 3: Hybrid-Modus: SSR und SSG gleichzeitig nutzen
Vorteile des Hybrid-Modus:
• SSR und SSG in einem Projekt
• Statische Seiten per SSG (Blog, Lighthouse 95+, CDN schneller)
• Dynamische Seiten per SSR (Nutzerbereich, Personalisierung)
• Build-Zeit und Serverkosten bleiben im Rahmen
Hybrid konfigurieren:
• In astro.config.mjs output: 'hybrid' setzen
• Im Page-Frontmatter prerender: true/false
- Statische Seiten: prerender: true
- Dynamische Seiten: prerender: false oder weglassen
Best Practices:
Standard: Hybrid
• Außer alle Seiten brauchen SSR – output: 'hybrid' ist meist optimal
SSR nur wo nötig
• Nur für wirklich dynamische Seiten prerender = false
Statische Assets über CDN
• Bilder, CSS, JS in public/
• Automatisch CDN, nicht über SSR
Caching
• Für selten wechselnde dynamische Inhalte (News-Listen) Cache oder ISR nutzen
FAQ
Wann brauche ich SSR statt SSG?
• SSG, wenn der Inhalt beim Build feststeht (Blog, Produktseiten, Über uns – ändert sich selten)
• SSR, wenn sich der Inhalt pro Besuch ändern kann (Login-Begrüßung, Echtzeitkurse, Warenkorb – jeder sieht etwas anderes)
5 Pflicht-Szenarien für SSR:
1) Authentifizierung und Personalisierung:
• Typisch: Login – beim Build kennen Sie weder Nutzer noch Anzeigenamen
• Lernplattform: „Weiterlernen: Lektion 5“ – SSR aus dem individuellen Fortschritt
2) Echtzeitdaten:
• Wetter, Börse, Sport – minütliche Änderungen
• Nicht jede Minute neu bauen – SSR holt bei jedem Besuch frische Daten
3) Datenbankabfragen:
• Produktsuche – jedes Keyword andere Ergebnisse
• Alle Kombinationen vorab unmöglich – SSR bei der Suche in Echtzeit
4) API-Routen:
• Formulare, Uploads, Drittanbieter-APIs brauchen Backend-Logik
• Astro SSR: API-Routen unter src/pages/api/xxx.js ohne separaten Server
5) A/B-Tests und Empfehlungen:
• Inhalt nach Geo, Zeit, Verhalten
• Marktplatz-Startseiten – unterschiedliche Empfehlungen pro Nutzer – SSR Pflicht
Wie konfiguriere ich Astro SSR? Welche Schritte?
Schritt 1 – Adapter installieren:
• Vercel: npx astro add vercel, für Vercel-Deploy
• Netlify: npx astro add netlify, für Netlify-Deploy
• Node.js: npx astro add node, für Self-Hosting oder Docker
Schritt 2 – astro.config.mjs:
• output: 'server' für SSR
• Adapter-Konfiguration:
import vercel from '@astrojs/vercel/serverless';
export default { output: 'server', adapter: vercel() }
Schritt 3 – Deploy:
• Vercel: GitHub verbinden, SSR wird erkannt, Deploy
• Netlify: GitHub verbinden, Functions-Verzeichnis, Deploy
• Node.js: npm run build, node dist/server/entry.mjs oder Docker
Welchen Adapter wählen? Unterschiede Vercel, Netlify, Node.js?
Vercel:
• @astrojs/vercel/serverless, für Vercel
• npx astro add vercel
• GitHub verbinden, SSR-Erkennung, Deploy
Netlify:
• @astrojs/netlify/functions, für Netlify
• npx astro add netlify
• GitHub verbinden, Functions-Verzeichnis, Deploy
Node.js:
• @astrojs/node, Self-Hosting oder Docker
• npx astro add node
• npm run build, node dist/server/entry.mjs
Empfehlung: Vercel/Netlify/Cloudflare – eine Zeile npx astro add [platform]. Self-Hosting – npx astro add node in wenigen Minuten. In der Praxis einfacher als die Doku vermuten lässt.
Was ist der Hybrid-Modus? Wie konfiguriere ich ihn?
• SSR und SSG in einem Projekt
• Statische Seiten SSG (Blog, Lighthouse 95+, CDN schneller)
• Dynamische Seiten SSR (Nutzerbereich, Personalisierung)
• Build-Zeit und Kosten bleiben kontrolliert
Konfiguration:
• astro.config.mjs: output: 'hybrid'
• Page-Frontmatter: prerender: true/false
- Statisch: prerender: true
- Dynamisch: prerender: false oder weglassen
Best Practices:
• Standard Hybrid (außer alles braucht SSR)
• SSR nur wo nötig (prerender = false)
• Statische Assets in public/ über CDN
• Cache/ISR für selten wechselnde dynamische Inhalte
Das ist Astros Stärke: statische Seiten mit 95+ Lighthouse, dynamische mit Personalisierung.
Beeinflusst SSR die Performance? Wann brauche ich kein SSR?
• SSR ist etwas langsamer als SSG – Rendering pro Request
• Moderne Server und CDN machen den Unterschied für viele Apps akzeptabel
Nicht überoptimieren:
• Geringer Traffic (unter 10.000 PV/Tag) – oft reicht eine statische Site
• SSR erhöht die Komplexität ohne Nutzen
• Technologie dient dem Business, nicht umgekehrt
SSR ist kein Allheilmittel – gezielt einsetzen. Statische Seiten SSG, dynamische SSR – Hybrid passt für die meisten Projekte.
Gesehen: ganzer Blog auf SSR – Performance schlechter, weil Blog-Inhalt unverändert und SSG über CDN schneller ist.
9 Min. Lesezeit · Veröffentlicht am: 2. Dez. 2025 · Aktualisiert am: 14. Juli 2026
Astro-Leitfaden
Wenn du über die Suche hier gelandet bist, kommst du am schnellsten weiter, indem du zum vorherigen oder nächsten Beitrag dieser Serie springst.
Vorheriger
Astro View Transitions: 2 Zeilen Code für APP-artige flüssige Seitenübergänge
Die View Transitions API verleiht Astro-Websites native Seitenübergänge – ohne React/Vue, mit nur 2 Zeilen Code für SPA-artige flüssige Navigation. Inklusive Praxisbeispiel und Best Practices.
Teil 9 von 18
Nächster
Astro vs Next.js: Die technische Wahrheit hinter 40 % schnellerer Performance bei statischen Websites
Tiefenvergleich von Astro und Next.js für statische Sites: Performance, Funktionen und Ökosystem. Astro ist 40 % schneller und reduziert JavaScript um 90 %, Next.js punktet bei dynamischen Inhalten und dem React-Ökosystem. Mit Benchmark-Daten, Entscheidungsbaum und Deployment-Leitfaden.
Teil 11 von 18
Ähnliche Beiträge
Was ist Astro? In 3 Minuten Zero JS, Islands Architecture und Content-First verstehen

Was ist Astro? In 3 Minuten Zero JS, Islands Architecture und Content-First verstehen
Astro-Blog von Grund auf: In 1 Stunde von der Startseite bis zum Deployment


Kommentare
Melde dich mit GitHub an, um einen Kommentar zu hinterlassen