Skip to content
IRC-Coding IRC-Coding
API Performance Caching CDN ETag Redis Latenz Durchsatz

API Performance und Caching: Schnelle, skalierbare und ressourcenschonende APIs

Lerne API Performance und Caching: Latenz, Durchsatz, Cache-Header, CDN, ETags, Redis, Strategien und Best Practices für schnelle APIs.

S

schutzgeist

2 min read
API Performance und Caching: Schnelle, skalierbare und ressourcenschonende APIs

API Performance und Caching

API Performance und Caching reduzieren Latenz, erhöhen den Durchsatz und schonen Backend-Ressourcen, indem sie Antworten und Berechnungen wiederverwenden.

Kompakte Beschreibung

API Performance beschreibt, wie schnell und effizient eine API Anfragen verarbeitet. Wichtige Kennzahlen sind Latenz, Durchsatz und Fehlerrate. Caching ist eine der effektivsten Methoden, um Performance zu verbessern, indem bereits berechnete oder abgerufene Daten zwischengespeichert werden. Caching kann auf verschiedenen Ebenen stattfinden: im Browser, im CDN, im API Gateway, im Anwendungsserver oder in der Datenbank. HTTP bietet standardisierte Cache-Header wie Cache-Control, ETag, Last-Modified und Expires. Serverseitige Caches wie Redis oder Memcached speichern häufig genutzte Daten im Arbeitsspeicher. Eine durchdachte Caching-Strategie berücksichtigt Cache-Dauer, Invalidierung, Konsistenz und die richtige Wahl der Cache-Ebene. Performance-Optimierung umfasst darüber hinaus Datenbankindizes, Pagination, Asynchronität, Kompression, Load Balancing und effiziente Serialisierung.

Wichtige Komponenten

Latenz und Durchsatz

Latenz ist die Zeit, die eine Anfrage von der Sendung bis zur Antwort benötigt. Durchsatz ist die Anzahl der Anfragen, die eine API pro Zeiteinheit verarbeiten kann. Gute API Performance bedeutet niedrige Latenz und hohen Durchsatz bei stabiler Fehlerrate.

HTTP Cache Header

Cache-Control ist der wichtigste HTTP-Header für Caching. Er legt Regeln wie max-age, no-cache, no-store, private oder public fest. ETag und Last-Modified ermöglichen bedingte Anfragen mit If-None-Match und If-Modified-Since. Der Server kann bei unveränderten Daten mit 304 Not Modified antworten, ohne den Body erneut zu senden.

Browser Cache

Browser cachen Antworten basierend auf den HTTP-Cache-Headern. Das reduziert Netzwerktraffic und verbessert die Ladezeit für wiederkehrende Anfragen. Für sensible Daten sollte private oder no-store verwendet werden, damit der Browser nichts speichert.

CDN Caching

Content Delivery Networks cachen API-Antworten oder statische Inhalte an geografisch verteilten Standorten. Das reduziert Latenz für Nutzer weltweit und entlastet die Backend-Server. CDNs eignen sich besonders für öffentliche, häufig angefragte Daten.

API Gateway Cache

API Gateways können Antworten vor dem Weiterleiten an Backend-Services cachen. Das reduziert Backend-Last und Antwortzeiten. Gateways prüfen Cache-Header, Rate Limits und Authentifizierung, bevor sie eine Anfrage an den Cache oder das Backend weitergeben.

Serverseitiger Cache

Serverseitige Caches wie Redis oder Memcached speichern Daten im Arbeitsspeicher. Sie werden genutzt, um Datenbankabfragen, teure Berechnungen oder externe API-Aufrufe zu vermeiden. Caches können mit TTL, Invalidierung oder Cache-Aside Pattern verwaltet werden.

Cache-Aside Pattern

Beim Cache-Aside Pattern prüft die Anwendung zuerst den Cache. Ist die Daten nicht vorhanden, wird sie aus der Datenbank geladen und im Cache gespeichert. Bei Updates wird der Cache invalidiert oder aktualisiert. Dieses Pattern ist flexibel und weit verbreitet.

ETag und bedingte Anfragen

ETag ist ein Wert, der die Version einer Ressource repräsentiert. Der Client sendet bei einer erneuten Anfrage den ETag im If-None-Match Header. Hat sich die Ressource nicht geändert, antwortet der Server mit 304 Not Modified. Das spart Bandbreite und Verarbeitungszeit.

Cache Invalidierung

Cache Invalidierung ist die Herausforderung, Caches aktuell zu halten. Strategien sind TTL-basiertes Ablaufen, explizite Invalidierung beim Schreiben, Write-Through Caching und Event-basierte Invalidierung. Falsche Invalidierung führt zu veralteten Daten.

Pagination und Datenmenge

Große Antworten erhöhen Latenz und Speicherverbrauch. Pagination, Filter und Sortierung begrenzen die zurückgegebene Datenmenge. Clients sollten nur die Daten abrufen, die sie tatsächlich benötigen.

Datenbankoptimierung

Langsame Datenbankabfragen sind häufig ein Engpass für API Performance. Indizes, optimierte Queries, Denormalisierung, Caching und Connection Pooling verbessern die Antwortzeiten. Langlaufende Anfragen sollten asynchron oder paginiert verarbeitet werden.

Kompression

Kompression mit gzip oder Brotli reduziert die Größe von Response-Bodys, besonders bei JSON. Moderne Server und Clients unterstützen Kompression standardmäßig. Der Accept-Encoding Header signalisiert unterstützte Verfahren.

Praxisbeispiel

Eine Produktdaten-API nutzt mehrere Caching-Ebenen, um Performance zu verbessern.

Cache-Konfiguration für öffentliche Produktdaten:

GET /api/v1/products/42

HTTP/1.1 200 OK
Content-Type: application/json
Cache-Control: public, max-age=3600
ETag: "abc123"

{
  "id": 42,
  "name": "Laptop",
  "price": 999
}

Bei einer erneuten Anfrage sendet der Client:

GET /api/v1/products/42
If-None-Match: "abc123"

Hat sich das Produkt nicht geändert, antwortet der Server mit:

HTTP/1.1 304 Not Modified

Serverseitig wird das Produkt zusätzlich in Redis mit einer TTL von einer Stunde gespeichert. Bei einer Preisänderung wird der Redis-Cache und der CDN-Cache invalidiert, sodass Clients die aktuellen Daten erhalten.

FAQ: API Performance und Caching

1. Was ist API Performance?

API Performance beschreibt, wie schnell und effizient eine API Anfragen verarbeitet. Wichtige Kennzahlen sind Latenz, Durchsatz und Fehlerrate.

2. Was ist Caching?

Caching ist das Zwischenspeichern von bereits berechneten oder abgerufenen Daten, um spätere Anfragen schneller zu bedienen und Backend-Ressourcen zu schonen.

3. Was ist Cache-Control?

Cache-Control ist ein HTTP-Header, der Caching-Regeln festlegt, wie max-age, no-cache, no-store, private oder public. Er steuert, wo und wie lange eine Antwort zwischengespeichert werden darf.

4. Was ist ein ETag?

Ein ETag ist ein Wert, der eine Version einer Ressource repräsentiert. Clients können ETags für bedingte Anfragen nutzen, um 304 Not Modified Antworten zu erhalten, wenn sich nichts geändert hat.

5. Was ist ein CDN?

Ein CDN ist ein Content Delivery Network. Es verteilt Inhalte an geografisch verteilten Standorten und reduziert Latenz sowie Backend-Last, indem es häufig angefragte Daten cacht.

6. Was ist Redis?

Redis ist ein schneller, speicherbasierter Datenbank- und Cache-Server. Er wird häufig für serverseitiges Caching, Session-Speicher und Message Queues verwendet.

7. Was ist das Cache-Aside Pattern?

Beim Cache-Aside Pattern prüft die Anwendung zuerst den Cache, lädt Daten bei Bedarf aus der Datenbank und speichert sie im Cache. Bei Updates wird der Cache invalidiert.

8. Was ist 304 Not Modified?

304 Not Modified ist eine HTTP-Antwort, die angibt, dass sich die Ressource nicht geändert hat. Der Server sendet keinen Response Body, was Bandbreite und Zeit spart.

9. Was ist Cache Invalidierung?

Cache Invalidierung entfernt oder aktualisiert zwischengespeicherte Daten, wenn sich die Originaldaten ändern. Sie ist notwendig, um Konsistenz zwischen Cache und Datenquelle zu gewährleisten.

10. Was ist Write-Through Caching?

Write-Through Caching bedeutet, dass Daten gleichzeitig in den Cache und in die Datenbank geschrieben werden. Der Cache ist immer aktuell, aber Schreiboperationen sind langsamer.

11. Was ist ein TTL?

TTL steht für Time To Live. Es gibt die Dauer an, die ein Cache-Eintrag gültig bleibt, bevor er automatisch ausläuft. TTL ist eine einfache Form der Cache-Invalidierung.

12. Was ist private vs public Caching?

private bedeutet, dass nur der Browser des Nutzers cachen darf, public erlaubt es auch gemeinsamen Caches wie CDNs. Für private oder sensible Daten sollte private oder no-store verwendet werden.

13. Was ist no-store?

no-store bedeutet, dass keine Version der Antwort zwischengespeichert werden darf. Es wird für besonders sensible Daten verwendet, die auf keiner Ebene gespeichert werden sollen.

14. Was ist Kompression bei APIs?

Kompression mit gzip oder Brotli reduziert die Größe von Response-Bodys. Sie senkt Bandbreite und Ladezeiten, besonders bei großen JSON-Antworten.

15. Was sind Best Practices für API Caching?

Best Practices sind die Verwendung korrekter HTTP-Cache-Header, die Wahl der passenden Cache-Ebene, angemessene TTL-Werte, zuverlässige Invalidierung, ETags für bedingte Anfragen, Vermeidung von Caching sensibler Daten, Pagination und Überwachung der Cache-Effektivität.

Quellen

  1. https://www.rfc-editor.org/rfc/rfc9111
  2. https://redis.io/docs/manual/keyspace-notifications/
  3. https://developer.mozilla.org/docs/Web/HTTP/Caching

Buchempfehlungen zur API-Performance und Architektur

Wenn Du Dich weiter mit API Performance, Caching und Systemdesign beschäftigen möchtest, empfehlen wir Dir die folgenden Bücher:

Keine Bücher für Kategorie "software-engineering" gefunden.

Zurück zum Blog
Share:

Ähnliche Beiträge