Überblick
Astro rendert rund 330 Seiten vorab; ein kleiner Cloudflare Worker übernimmt nur den Stripe-Checkout, den Zahlungs-Webhook und signierte PDF-Downloads aus privatem Speicher. Lighthouse vergibt 100 Punkte für SEO und Best Practices.
Ausgangslage
Ein Onlineshop für die PDF-Ratgeber einer Ernährungsberaterin, dazu ein Archiv aus mehr als 320 Instagram-Posts, das zu schnellen, indexierbaren Seiten umgebaut wurde.
Architektur
- Konsequent statisch: Astro rendert jede Seite (rund 330) schon beim Build vor. Cloudflare liefert sie über die Edge aus, ohne Server und ohne Datenbankabfrage pro Aufruf.
- Nur drei Routen führen bei Bedarf Code in einem Cloudflare Worker aus: Checkout, Stripe-Webhook und Download.
- Die Inhalte werden in Sanity gepflegt und nur einmal beim Build gelesen; die TypeScript-Typen werden aus dem Schema generiert.
- Fotos und Videos liegen in Cloudflare R2: rund 7.400 Objekte (Originale plus WebP-Varianten), ohne Egress-Gebühren.
Zahlungen und Auslieferung
- Stripe Checkout; die Webhook-Signatur wird bei jedem Aufruf verifiziert.
- Resend verschickt nach dem Kauf eine E-Mail mit einem signierten (HMAC) Download-Link, der 30 Tage lang gültig bleibt.
- Der Worker streamt das PDF aus einem privaten R2-Bucket. Es gibt keine öffentlichen Datei-URLs, und es werden keine Kundendaten gespeichert.
Content-Pipeline
- Ein idempotenter Instagram-Importer: Deterministische IDs sorgen dafür, dass ein erneuter Lauf weder Posts dupliziert noch bearbeitete Texte überschreibt.
- KI-Agenten haben den Text in den Bildern von mehr als 160 Posts transkribiert und diese damit indexierbar gemacht. Zu kurze Posts erhalten automatisch
noindex.
Ergebnisse
- Lighthouse auf Mobilgeräten: 87 bis 97 für Performance, 95 für Barrierefreiheit, 100 für Best Practices und 100 für SEO.
- Ein AVIF-Hero-Bild mit 57 KB auf Mobilgeräten, Inline-CSS und Font-Subsetting.
- Für KI-Agenten gibt es jede Seite zusätzlich als Markdown, dazu eine
llms.txt. - Die Auslieferung statischer Seiten ist kostenlos, Traffic-Spitzen kosten also nichts.

