Caching-Strategien für Webentwicklung | Enjyn Gruppe
Hallo Welt
Hallo Welt
Original Lingva Deutsch
Übersetzung wird vorbereitet...
Dieser Vorgang kann bis zu 60 Sekunden dauern.
Diese Seite wird erstmalig übersetzt und dann für alle Besucher gespeichert.
0%
DE Zurück zu Deutsch
Übersetzung durch Lingva Translate

235 Dokumentationen verfügbar

Wissensdatenbank

Caching Strategien Webentwicklung

Zuletzt aktualisiert: 20.01.2026 um 10:02 Uhr

Caching-Strategien für Webentwicklung

Richtiges Caching kann Ihre Website um ein Vielfaches beschleunigen. Dieser Guide erklärt die verschiedenen Caching-Ebenen und wie Sie sie optimal einsetzen.

Die Caching-Pyramide

Ebene Beschreibung Latenz
Browser-Cache Lokal beim Nutzer ~0ms
CDN-Cache Edge-Server weltweit ~20-50ms
Reverse Proxy Vor dem Webserver ~1-5ms
Application Cache In-Memory (Redis) ~1ms
Datenbank Query Cache ~10-100ms

Browser-Caching

Cache-Control Header

# Statische Assets (1 Jahr)
Cache-Control: public, max-age=31536000, immutable

# API-Responses (keine Cache)
Cache-Control: no-store

# Private Daten (nur Browser, nicht CDN)
Cache-Control: private, max-age=3600

# Revalidierung erzwingen
Cache-Control: no-cache

Cache-Control Direktiven

Direktive Bedeutung
public Darf überall gecacht werden
private Nur im Browser, nicht im CDN
max-age=N Cache-Dauer in Sekunden
no-cache Immer beim Server nachfragen
no-store Niemals cachen
immutable Datei ändert sich nie
stale-while-revalidate Alten Cache zeigen während Refresh

ETag und Last-Modified

# Server sendet
ETag: "abc123"
Last-Modified: Wed, 15 Nov 2024 12:00:00 GMT

# Browser fragt nach
If-None-Match: "abc123"
If-Modified-Since: Wed, 15 Nov 2024 12:00:00 GMT

# Server antwortet 304 Not Modified wenn unverändert

Nginx Caching-Konfiguration

# Statische Dateien
location ~* \.(css|js|jpg|jpeg|png|gif|ico|woff2|svg)$ {
    expires 1y;
    add_header Cache-Control "public, immutable";
    access_log off;
}

# HTML-Seiten
location ~* \.html$ {
    expires 1h;
    add_header Cache-Control "public, must-revalidate";
}

# API - kein Cache
location /api/ {
    add_header Cache-Control "no-store";
    proxy_pass http://backend;
}

Nginx als Reverse Proxy Cache

# Cache-Zone definieren
proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m
                 max_size=1g inactive=60m use_temp_path=off;

server {
    location / {
        proxy_cache my_cache;
        proxy_cache_valid 200 60m;
        proxy_cache_valid 404 1m;
        proxy_cache_use_stale error timeout updating;
        proxy_cache_background_update on;

        add_header X-Cache-Status $upstream_cache_status;

        proxy_pass http://backend;
    }
}

CDN-Caching

Cloudflare Cache-Regeln

  • Cache Everything: Alle Inhalte cachen
  • Bypass Cache: Für Admin-Bereiche, APIs
  • Edge TTL: Wie lange CDN cached
  • Browser TTL: Cache-Control für Browser

Cache-Busting für Assets

<!-- Versionierung im Dateinamen -->
<link rel="stylesheet" href="/css/style.abc123.css">
<script src="/js/app.def456.js"></script>

<!-- Oder mit Query-String (weniger empfohlen) -->
<link rel="stylesheet" href="/css/style.css?v=1.2.3">

Application-Level Caching

Redis für PHP

<?php
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);

$cacheKey = 'user:' . $userId;
$userData = $redis->get($cacheKey);

if ($userData === false) {
    // Aus Datenbank laden
    $userData = $db->query("SELECT * FROM users WHERE id = ?", [$userId]);

    // Im Cache speichern (1 Stunde)
    $redis->setex($cacheKey, 3600, json_encode($userData));
} else {
    $userData = json_decode($userData, true);
}

Node.js mit node-cache

const NodeCache = require('node-cache');
const cache = new NodeCache({ stdTTL: 3600 });

async function getUser(userId) {
  const cached = cache.get(`user:${userId}`);
  if (cached) return cached;

  const user = await db.query('SELECT * FROM users WHERE id = ?', [userId]);
  cache.set(`user:${userId}`, user);
  return user;
}

Caching-Strategien

Cache-Aside (Lazy Loading)

1. Prüfe Cache
2. Wenn Miss → Lade aus DB → Speichere in Cache
3. Gib Daten zurück

Write-Through

1. Schreibe in Cache
2. Cache schreibt automatisch in DB
3. Immer synchron

Write-Behind

1. Schreibe in Cache
2. Cache schreibt asynchron in DB
3. Schneller, aber Risiko bei Ausfall

Was sollte gecacht werden?

✅ Gut zu cachen:
  • Statische Assets (CSS, JS, Bilder)
  • API-Responses die sich selten ändern
  • Datenbank-Abfragen (teure Queries)
  • Berechnete Werte
  • Session-Daten
❌ Nicht cachen:
  • Personalisierte Inhalte (ohne Vorsicht)
  • Echtzeit-Daten (Börse, Chat)
  • Sensible Daten
  • POST/PUT/DELETE Responses

Weitere Informationen

Enjix Beta

Enjyn AI Agent

Hallo 👋 Ich bin Enjix — wie kann ich dir helfen?
120