Website Performance Optimierung
Der komplette Guide zur Optimierung Ihrer Website Performance. Von Core Web Vitals über Bildoptimierung bis Caching - alles mit praktischen Code-Beispielen und Hamburg-spezifischen Empfehlungen.
Warum Website Performance entscheidend ist
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. Langsame Websites verlieren nicht nur Rankings, sondern auch Besucher und Umsatz.
Besonders in Hamburg, wo der Wettbewerb im digitalen Raum stark ist, kann Performance den Unterschied zwischen Erfolg und Misserfolg ausmachen. Eine schnelle Website ist nicht nur SEO-relevant, sondern direkt umsatzrelevant.
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 unter 2.5 Sekunden.
Benchmarks
Optimierungsmaßnahmen
1. Server Response Time optimieren
TTFB (Time to First Byte) sollte unter 600ms 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
Kritische Ressourcen wie Hero-Images oder wichtige Fonts sollten vorab geladen werden.
<!-- 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://fonts.googleapis.com">
<link rel="dns-prefetch" href="https://analytics.google.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> First Input Delay (FID) / Interaction to Next Paint (INP)
Update 2024: Google ersetzt FID durch INP (Interaction to Next Paint) im März 2024. INP misst die Reaktionszeit auf alle User-Interaktionen, nicht nur die erste.
FID/INP misst die Zeit zwischen der ersten User-Interaktion (Klick, Tap) und der Browser-Reaktion. Ein guter FID liegt unter 100ms, ein guter INP unter 200ms.
Optimierungsmaßnahmen
1. JavaScript Execution reduzieren
Großer JavaScript-Code blockiert den Main Thread. Code splitting und lazy loading sind essentiell.
// 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://www.googletagmanager.com/gtag/js"></script>
<!-- Mit defer für besseres Timing -->
<script defer src="/analytics.js"></script>
<!-- Self-hosted statt CDN für bessere Performance -->
<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 unter 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
<!-- Explizite Dimensionen -->
<img src="logo.png" alt="Logo" width="200" height="50">
<!-- Oder aspect-ratio in CSS -->
<img src="hero.jpg" alt="Hero" style="aspect-ratio: 16/9; width: 100%;">
<!-- Modern mit CSS aspect-ratio -->
.hero-image {
width: 100%;
aspect-ratio: 16 / 9;
object-fit: cover;
} 2. Platzhalter für dynamische Inhalte reservieren
<!-- Skeleton Screen für Ads -->
.ad-placeholder {
width: 100%;
height: 250px;
background: linear-gradient(90deg, #f0f0f0 25%, #e0e0e0 50%, #f0f0f0 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 50-70% der gesamten Page Size aus. Optimierung ist der größte Performance-Hebel.
Format-Vergleich
| Format | Browser Support | Dateigröße | Empfehlung |
|---|---|---|---|
| AVIF | ~85% | Kleinste | Erste Wahl für moderne Browser |
| WebP | ~96% | 30% 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 CLI
# Installation
npm install -g @squoosh/cli
# Batch-Konvertierung zu WebP
squoosh-cli --webp '{"quality":80}' images/*.jpg
# Zu AVIF mit verschiedenen Größen
squoosh-cli --avif '{"quality":70}' \
--resize '{"width":1200}' \
--resize '{"width":800}' \
--resize '{"width":400}' \
images/*.jpg Caching Strategien
Effektives Caching reduziert Server-Load und verbessert massiv die Performance für wiederkehrende Besucher.
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
- Edge Functions für SSR
BunnyCDN
- Sehr günstig (€1/TB)
- Beste Performance in Europa
- Image Optimization inklusive
Hamburg Hosting-Empfehlungen
Für optimale Performance in Hamburg empfehlen wir Hosting-Anbieter mit Servern in Deutschland oder direkt in Hamburg.
Hetzner
Server in Nürnberg & Falkenstein
- • Beste Performance/Preis-Ratio in Deutschland
- • 20 TB Traffic inklusive
- • Sehr niedriger Ping aus Hamburg (<10ms)
IONOS
Datacenter in Berlin & Karlsruhe
- • Deutscher Support und Datenschutz
- • Managed WordPress Hosting
- • Inklusive SSL-Zertifikate
Vercel / Netlify
Edge Network (inkl. Frankfurt)
- • Perfect für Jamstack (Astro, Next.js, etc.)
- • Automatische Deployments via Git
- • Global CDN inklusive
Guide als PDF speichern
Drucken Sie diesen Guide als PDF aus oder teilen Sie ihn mit Ihrem Team.
Professionelle Performance-Optimierung
Lassen Sie uns Ihre Website analysieren und auf Top-Performance bringen. Wir optimieren Core Web Vitals, reduzieren Ladezeiten und steigern Ihre Conversion Rate.