Website Performance Optimierung
Dieser Guide zeigt, wie Sie Ihre Website Performance verbessern: Core Web Vitals, Bildoptimierung und Caching, jeweils mit Code-Beispielen. Dazu kommen Empfehlungen speziell für Hamburg.
Website Performance als Ranking- und Umsatzfaktor
Website Performance ist seit 2021 ein offizieller Google Ranking-Faktor. Mit der Einführung der Core Web Vitals hat Google klare Metriken definiert, die die User Experience messbar machen. Eine langsame Website kostet Sie Rankings und Besucher, und mit den Besuchern auch Umsatz.
In Hamburg ist der Online-Wettbewerb stark. Hier kann die Ladezeit entscheiden, ob ein Besucher bei Ihnen bleibt oder zur Konkurrenz wechselt. Sie zählt für Ihr Google-Ranking und wirkt sich direkt auf den Umsatz aus.
Largest Contentful Paint (LCP)
LCP misst, wie lange es dauert, bis das größte sichtbare Content-Element im Viewport geladen ist. Dies ist oft ein Hero-Image, eine große Überschrift oder ein Video. Google empfiehlt einen LCP von höchstens 2,5 Sekunden.
Benchmarks
Optimierungsmaßnahmen
1. Server Response Time optimieren
TTFB (Time to First Byte) sollte nach Googles Richtwert bei höchstens 0,8 Sekunden liegen. In Hamburg empfehlen wir Hetzner oder IONOS für schnelle Server-Response-Zeiten.
# Nginx Performance Tuning
worker_processes auto;
worker_connections 4096;
# Gzip Compression
gzip on;
gzip_vary on;
gzip_min_length 1024;
gzip_types text/plain text/css text/xml text/javascript
application/json application/javascript application/xml+rss;
# Caching
proxy_cache_path /var/cache/nginx levels=1:2
keys_zone=my_cache:10m max_size=1g
inactive=60m use_temp_path=off; 2. Ressourcen priorisieren mit preload
Laden Sie kritische Ressourcen wie Hero-Images oder wichtige Fonts vorab.
<!-- Preload kritischer Ressourcen -->
<link rel="preload" as="image" href="/hero-image.webp"
type="image/webp" fetchpriority="high">
<link rel="preload" as="font" href="/fonts/main.woff2"
type="font/woff2" crossorigin>
<!-- Preconnect zu externen Domains -->
<link rel="preconnect" href="https://cdn.example.com">
<link rel="dns-prefetch" href="https://analytics.example.com"> 3. Bilder optimal ausliefern
Verwenden Sie moderne Bildformate (WebP, AVIF) und responsive Images mit srcset.
<picture>
<!-- AVIF für moderne Browser -->
<source type="image/avif"
srcset="hero-400.avif 400w,
hero-800.avif 800w,
hero-1200.avif 1200w"
sizes="(max-width: 600px) 400px,
(max-width: 1200px) 800px,
1200px">
<!-- WebP Fallback -->
<source type="image/webp"
srcset="hero-400.webp 400w,
hero-800.webp 800w,
hero-1200.webp 1200w"
sizes="(max-width: 600px) 400px,
(max-width: 1200px) 800px,
1200px">
<!-- JPEG Fallback -->
<img src="hero-800.jpg"
alt="Hero Image"
loading="eager"
fetchpriority="high"
width="1200"
height="600">
</picture> Interaction to Next Paint (INP)
Stand Oktober 2026: Seit dem 12. März 2024 ist INP (Interaction to Next Paint) der Core Web Vital für Reaktionsfähigkeit und hat FID abgelöst. INP wertet alle Interaktionen eines Besuchs aus, FID nur die erste. Lighthouse löst keine Interaktionen aus und liefert deshalb keinen INP. Im Labor dient Total Blocking Time als Näherung, verlässliche INP-Werte kommen aus Felddaten wie PageSpeed Insights und der Search Console.
INP misst während des ganzen Besuchs, wie lange die Seite braucht, um sichtbar auf Klicks, Tippen und Tastatureingaben zu reagieren, und meldet eine der langsamsten Interaktionen. Ein guter INP liegt bei höchstens 200 ms, über 500 ms gilt als schlecht.
Optimierungsmaßnahmen
1. JavaScript Execution reduzieren
Umfangreiches JavaScript blockiert den Main Thread. Teilen Sie den Code per Code Splitting auf und laden Sie Komponenten per Lazy Loading erst bei Bedarf.
// Dynamic Imports für Code Splitting
const HeavyComponent = lazy(() => import('./HeavyComponent'));
// React.lazy mit Suspense
<Suspense fallback={<Loading />}>
<HeavyComponent />
</Suspense>
// Webpack Magic Comments für Chunk Names
import(/* webpackChunkName: "analytics" */ './analytics'); 2. Long Tasks vermeiden
Tasks über 50ms blockieren User-Interaktionen. Nutzen Sie Web Workers für rechenintensive Aufgaben.
// Main Thread
const worker = new Worker('heavy-calculation.js');
worker.postMessage({ data: largeDataset });
worker.onmessage = (e) => {
updateUI(e.data);
};
// heavy-calculation.js (Worker)
self.onmessage = (e) => {
const result = performHeavyCalculation(e.data);
self.postMessage(result);
}; 3. Third-Party Scripts optimieren
Analytics, Chatbots und andere Third-Party Scripts asynchron oder mit defer laden.
<!-- Asynchron laden -->
<script async src="https://widgets.example.com/embed.js"></script>
<script defer src="/analytics.js"></script>
<script defer src="/libs/jquery.min.js"></script> Cumulative Layout Shift (CLS)
CLS misst die visuelle Stabilität einer Seite. Wenn Elemente während des Ladens "springen", führt das zu schlechter User Experience. Ein guter CLS liegt bei höchstens 0,1.
Häufigste CLS-Verursacher
Browser kennt die Größe nicht und reserviert keinen Platz
Inhalte erscheinen nach dem initialen Rendering
FOIT (Flash of Invisible Text) verschiebt Layout
Lösungen
1. Immer width und height angeben
<img src="logo.png" alt="Logo" width="200" height="50">
<img src="hero.jpg" alt="Hero" style="aspect-ratio: 16/9; width: 100%;">
.hero-image {
width: 100%;
aspect-ratio: 16 / 9;
object-fit: cover;
} 2. Platzhalter für dynamische Inhalte reservieren
.ad-placeholder {
width: 100%;
height: 250px;
background: linear-gradient(90deg, #1c2333 25%, #2c3446 50%, #1c2333 75%);
background-size: 200% 100%;
animation: loading 1.5s infinite;
}
@keyframes loading {
0% { background-position: 200% 0; }
100% { background-position: -200% 0; }
} 3. Font Loading optimieren
/* font-display für besseres Fallback */
@font-face {
font-family: 'CustomFont';
src: url('/fonts/custom.woff2') format('woff2');
font-display: swap; /* Zeigt Fallback sofort */
font-weight: 400;
font-style: normal;
}
/* Preload kritischer Fonts */
<link rel="preload" as="font"
href="/fonts/custom.woff2"
type="font/woff2"
crossorigin> Bilder-Optimierung
Bilder machen oft einen großen Teil der gesamten Seitengröße aus. Hier liegt deshalb meist einer der größten Hebel für bessere Performance.
Format-Vergleich
| Format | Browser Support | Dateigröße | Empfehlung |
|---|---|---|---|
| AVIF | Alle aktuellen großen Browser | Kleinste | Erste Wahl für moderne Browser |
| WebP | Alle aktuellen großen Browser | Meist kleiner als JPEG | Bester Fallback |
| JPEG | 100% | Baseline | Legacy Support |
| PNG | 100% | Größte | Nur für Transparenz |
Optimierungs-Tools
Sharp (Node.js)
const sharp = require('sharp');
// Bild in mehrere Formate konvertieren
await sharp('input.jpg')
.resize(1200, 800, { fit: 'cover' })
.webp({ quality: 80 })
.toFile('output-1200.webp');
await sharp('input.jpg')
.resize(1200, 800, { fit: 'cover' })
.avif({ quality: 70 })
.toFile('output-1200.avif'); Squoosh (Web-App)
Für einzelne Bilder zeigt Ihnen die Web-App squoosh.app Original und komprimierte Version direkt nebeneinander. Die Squoosh CLI gibt es im Repository nicht mehr; für viele Bilder auf einmal nehmen Sie Sharp.
Caching Strategien
Mit Caching senken Sie die Server-Last, und bei wiederkehrenden Besuchern laden Ihre Seiten deutlich schneller.
Browser Caching (.htaccess)
<IfModule mod_expires.c>
ExpiresActive On
# Bilder - 1 Jahr
ExpiresByType image/jpeg "access plus 1 year"
ExpiresByType image/webp "access plus 1 year"
ExpiresByType image/avif "access plus 1 year"
ExpiresByType image/png "access plus 1 year"
ExpiresByType image/svg+xml "access plus 1 year"
# CSS und JS - 1 Monat
ExpiresByType text/css "access plus 1 month"
ExpiresByType application/javascript "access plus 1 month"
# Fonts - 1 Jahr
ExpiresByType font/woff2 "access plus 1 year"
ExpiresByType font/woff "access plus 1 year"
# HTML - 1 Stunde
ExpiresByType text/html "access plus 1 hour"
</IfModule> Service Worker Caching
// service-worker.js
const CACHE_NAME = 'v1';
const urlsToCache = [
'/',
'/styles/main.css',
'/scripts/main.js',
'/images/logo.png'
];
// Install Event - Cache Ressourcen
self.addEventListener('install', (event) => {
event.waitUntil(
caches.open(CACHE_NAME)
.then((cache) => cache.addAll(urlsToCache))
);
});
// Fetch Event - Cache-First Strategy
self.addEventListener('fetch', (event) => {
event.respondWith(
caches.match(event.request)
.then((response) => {
// Cache hit - return cached response
if (response) return response;
// Fetch from network
return fetch(event.request);
})
);
}); CDN & Edge Computing
Ein Content Delivery Network (CDN) verteilt Ihre Inhalte auf Server weltweit und liefert sie vom geografisch nächsten Standort aus. Für Hamburg empfehlen wir CDNs mit starker Präsenz in Europa.
Cloudflare
- Kostenloser Plan verfügbar
- DDoS Protection inklusive
- Workers für serverseitiges Rendering am Edge
BunnyCDN
- Abrechnung nach Datenvolumen
- Schnelle Auslieferung in Europa
- Bildoptimierung als kostenpflichtiges Add-on (Bunny Optimizer)
Hamburg Hosting-Empfehlungen
Für schnelle Ladezeiten in Hamburg empfehlen wir Hosting-Anbieter mit Servern in Deutschland oder direkt in Hamburg.
Hetzner
Server in Nürnberg & Falkenstein
- • Viel Performance für den Preis
- • Daten bleiben in Deutschland, wenn Sie einen deutschen Standort wählen
- • Kurze Wege zu Besuchern aus Hamburg
IONOS
Datacenter in Berlin & Karlsruhe
- • Deutscher Support und Datenschutz
- • Managed WordPress Hosting
- • Inklusive SSL-Zertifikate
Cloudflare Workers
Globales Edge-Netzwerk
- • Passt gut zu Astro und Next.js
- • Automatische Deployments via Git
- • Statische Dateien kommen direkt aus dem CDN
- • Der kostenlose Plan reicht für kleine Projekte
Guide drucken oder speichern
Drucken Sie diesen Guide als PDF aus oder teilen Sie ihn mit Ihrem Team.
Performance-Optimierung für Ihre Website
Wir messen Ihre Website mit Lighthouse und PageSpeed Insights, beheben, was sie ausbremst, und arbeiten auf grüne Core Web Vitals hin. Das Erstgespräch ist kostenlos, danach erhalten Sie ein individuelles Festpreisangebot.