Short Polling ist eine Client-Server-Kommunikationstechnik, bei der der Client in festen zeitlichen Abständen HTTP-Anfragen sendet, um aktualisierte Daten zu erhalten. Der Server verarbeitet jede Anfrage sofort und gibt den aktuellen Status zurück, auch wenn sich nichts geändert hat. Laut Amazon Web Services, 2024 ist Short Polling die am einfachsten zu implementierende, aber am wenigsten effiziente Polling-Methode, die eine übermäßige Server- und Netzwerklast erzeugt.
Wichtige Erkenntnisse
Short Polling ist ein Kommunikationsmuster, bei dem der Client in regelmäßigen Abständen HTTP-Anfragen an den Server mit einem vordefinierten Intervall sendet und der Server jede Anfrage synchron verarbeitet und sofort das Ergebnis zurückgibt. Das Polling-Intervall wird auf der Client-Seite mit Timern festgelegt und beträgt je nach Anforderung an die Datenaktualität normalerweise 1 bis 60 Sekunden.
Short Polling ist historisch gesehen der erste Mechanismus zur Organisation von Echtzeit-Kommunikation in Webanwendungen. In den frühen 2000er Jahren, vor der zweiten Generation von XMLHttpRequest, verwendeten Webseiten <meta http-equiv="refresh"> oder periodisches iframe-Neuladen, um Inhalte zu aktualisieren. Mit dem Aufkommen der AJAX-Technologie (Asynchronous JavaScript and XML) im Jahr 2005 wurde Short Polling zum Standardansatz für Datenaktualisierungen ohne vollständiges Neuladen der Seite.
Die Short Polling-Architektur umfasst drei Komponenten: einen Client-Timer, eine HTTP-Anfrage und einen Server-Handler. Der Client startet einen Intervall-Timer, bei dessen Auslösung eine GET-Anfrage an den Server gesendet wird. Der Server führt eine Abfrage an eine Datenbank oder andere Quelle durch, erstellt eine Antwort und gibt sie sofort an den Client zurück. Der Client aktualisiert die Oberfläche und wartet auf das nächste Timer-Ereignis. Dieser Zyklus wiederholt sich unbegrenzt, solange die Anwendung aktiv ist.
Das Hauptproblem von Short Polling sind die unvermeidlichen leeren Anfragen. Wenn sich Daten selten ändern, geben die meisten Anfragen ein Ergebnis „keine Änderungen“ zurück, was Netzwerkbandbreite und CPU-Zeit für die Verarbeitung verschwendet. Bei 10.000 Clients mit einem Polling-Intervall von 5 Sekunden empfängt der Server 2.000 Anfragen pro Sekunde — ein erheblicher Teil davon ist nutzlos, wenn die Aktualisierungsfrequenz 1 Ereignis pro Minute beträgt.
Short Polling funktioniert in einem einfachen Zyklus: Der Client stellt einen Intervall-Timer mit einer bestimmten Periode (z.B. 5000 ms) ein. Bei jedem Timer-Ereignis erstellt der Client eine HTTP-GET-Anfrage an den Server-Endpunkt, normalerweise mit einem Zeitstempelparameter der letzten Aktualisierung. Der Server empfängt die Anfrage, prüft auf neue Daten nach dem angegebenen Zeitstempel und gibt eine Antwort zurück — entweder mit neuen Daten oder mit einem Indikator, dass keine Aktualisierungen vorliegen.
Ein kritischer Konfigurationsparameter von Short Polling ist das Polling-Intervall. Ein zu kurzes Intervall (weniger als 3 Sekunden) erzeugt eine hohe Server- und Netzwerklast. Ein zu langes Intervall (mehr als 30 Sekunden) reduziert die Datenaktualität. Das optimale Intervall hängt vom Szenario ab: für Überwachungs-Dashboards — 5–15 Sekunden, für Nachrichtenfeeds — 30–60 Sekunden, für kritische Alarme — 1–3 Sekunden. Die Wahl des Intervalls ist immer ein Kompromiss zwischen Datenaktualität und Infrastrukturlast.
Zur Reduzierung der Last in Leerlaufzeiten wird ein adaptives Intervall verwendet: Wenn mehrere aufeinanderfolgende Anfragen ein leeres Ergebnis zurückgeben, wird das Intervall erhöht (z.B. von 5 auf 15 Sekunden). Wenn neue Daten auftauchen, wird das Intervall auf den Mindestwert zurückgesetzt. Der exponentielle Backoff-Algorithmus kann die Anzahl leerer Anfragen bei seltenen Aktualisierungen um das 3- bis 5-fache reduzieren.
Betrachten wir eine clientseitige Short Polling-Implementierung mit setInterval und der Fetch-API. Die Funktion nimmt eine Endpunkt-URL und das Polling-Intervall in Millisekunden entgegen.
function startPolling(url, intervalMs) {
const lastTimestamp = new Date().toISOString();
const timerId = setInterval(async () => {
try {
const params = new URLSearchParams({
since: lastTimestamp
});
const response = await fetch(url + "?" + params);
const data = await response.json();
if (data.updates && data.updates.length > 0) {
renderUpdates(data.updates);
console.log("Empfangen", data.updates.length, "updates");
}
} catch (error) {
console.error("Polling fehlgeschlagen:", error);
}
}, intervalMs);
return timerId;
}
const timer = startPolling("/api/updates", 5000);
// clearInterval(timer) zum Stoppen
Der Code erstellt ein Polling-Intervall von 5 Sekunden und übergibt den Zeitstempel der letzten Aktualisierung an den Server. Der Server kann diesen Parameter verwenden, um Daten zu filtern und nur neue Datensätze zurückzugeben, wodurch die Menge der übertragenen Informationen reduziert wird. Die Funktion gibt den Timer-Identifikator zurück, um das Polling stoppen zu können.
Die serverseitige Implementierung für Short Polling ist äußerst einfach — es ist ein gewöhnlicher REST-Endpunkt, der GET-Anfragen akzeptiert und eine JSON-Antwort mit dem aktuellen Zustand oder Daten, die nach dem angegebenen Zeitstempel geändert wurden, zurückgibt.
const express = require("express");
const app = express();
let items = [];
app.get("/api/updates", (req, res) => {
const since = req.query.since;
const filtered = items.filter(item => item.timestamp > since);
res.json({ updates: filtered });
});
app.listen(3000);
Der Server empfängt den since-Parameter und filtert Datensätze, deren Zeitstempel den angegebenen Wert überschreitet. Dieser Ansatz minimiert die Datenmenge in jeder Antwort, indem er nur inkrementelle Änderungen zurückgibt. Wenn keine neuen Daten vorliegen, gibt der Server ein leeres Array zurück und der Client setzt das Polling nach Plan fort.
Short Polling und Long Polling lösen dasselbe Problem — die Zustellung von Daten vom Server zum Client — unterscheiden sich jedoch grundlegend in der Effizienz. Short Polling verwendet ein festes Anfrageintervall und erzeugt eine vorhersagbare Last, während Long Polling die Verbindung offen hält, bis ein Ereignis eintritt, und so die Anzahl der leeren Antworten minimiert.
| Kriterium | Short Polling | Long Polling |
|---|---|---|
| Implementierungskomplexität | Niedrig, Standard-REST | Mittel, asynchrone Verarbeitung |
| Aktualisierungslatenz | Fest, bis zu N Sekunden | Minimal, beim Ereigniseintritt |
| Anzahl der Anfragen | Konstant, N Anfragen pro Minute | Ereignisbasiert, in der Regel viel weniger |
| Serverlast | Hoch bei kurzem Intervall | Verbindungshaltung, asynchrone Verarbeitung |
| Leerlaufverkehr | Maximal, jede Anfrage mit Headern | Minimal, eine offene Verbindung |
| Skalierbarkeit | Einfach, zustandslose Anfragen | Komplex, erfordert gemeinsame Ereigniswarteschlange |
Die Wahl zwischen den Techniken hängt von der Aktualisierungshäufigkeit der Daten ab. Wenn Ereignisse häufiger als einmal alle 10 Sekunden auftreten — beide Ansätze erzeugen vergleichbare Last, und Short Polling kann einfacher sein. Wenn Ereignisse selten sind (Stunden oder Minuten zwischen Änderungen) — ist Long Polling vorzuziehen, da es keine leeren Anfragen erzeugt. Für Zwischenszenarien hängt die Wahl von den Infrastrukturbeschränkungen und der Möglichkeit ab, WebSocket zu verwenden.
Short Polling wird in Szenarien eingesetzt, in denen die Anforderungen an die Datenaktualität gering sind und die Einfachheit der Implementierung Vorrang vor der Effizienz hat. Die typischsten Fälle sind interne Administrationspanels, Überwachungssysteme mit niedriger Alarmfrequenz und Anwendungen, bei denen eine Verzögerung von 15–30 Sekunden akzeptabel ist.
Wichtige Einschränkung — Short Polling ist nicht geeignet für zeitkritische Anwendungen (Handelsterminals, Notfallwarnsysteme), bei denen selbst eine Verzögerung von 1 Sekunde inakzeptabel ist. In solchen Szenarien müssen WebSocket, Server-Sent Events oder Long Polling verwendet werden. Beim Entwurf eines Systems mit Short Polling sollte das Anfragebudget berechnet werden: Bei 1.000 Clients mit 5 Sekunden Intervall verarbeitet der Server 12.000 Anfragen pro Minute, was eine entsprechende Ressourcenbasis erfordert.
Häufig gestellte Fragen
Short Polling ist, wenn eine Anwendung den Server alle N Sekunden fragt: „Gibt es neue Daten?“, und der Server jedes Mal antwortet, auch wenn sich nichts geändert hat. Es ist, als würde man alle 5 Minuten zum Briefkasten gehen, um zu prüfen, ob neue Post gekommen ist.
Das optimale Short Polling-Intervall hängt vom Szenario ab: 5–10 Sekunden für Überwachungs-Dashboards, 15–30 Sekunden für Nachrichtenfeeds, 30–60 Sekunden für Statusseiten. Das Intervall sollte ein Kompromiss zwischen Datenaktualität und Serverlast sein. Beginnen Sie mit 10 Sekunden und passen Sie es basierend auf Testergebnissen an.
Short Polling — der Client fragt den Server ständig in festen Abständen ab. Long Polling — der Client stellt eine Anfrage, und der Server hält sie offen, bis Daten erscheinen. Short Polling ist einfacher zu implementieren, erzeugt aber bei seltenen Aktualisierungen mehr leere Anfragen.
Short Polling ist einfacher zu implementieren als WebSocket und erfordert kein spezielles Protokoll — es funktioniert über normale HTTP-Anfragen. Short Polling ist für einfache interne Systeme gerechtfertigt, bei denen eine Verzögerung von 10–30 Sekunden akzeptabel ist und die Infrastrukturkosten für die Unterstützung von WebSocket unverhältnismäßig sind.
Verwenden Sie ein adaptives Intervall: Wenn keine Aktualisierungen vorliegen, erhöhen Sie die Pause zwischen den Anfragen um das 2- bis 3-fache. Fügen Sie den since-Parameter mit dem Zeitstempel der letzten Anfrage hinzu, damit der Server nur inkrementelle Änderungen zurückgibt. Zwischenspeichern Sie Antworten auf CDN- oder Proxyserver-Seite, um die Backend-Last zu reduzieren.
Zusammenfassung
setInterval oder rekursives setTimeout mit konstantem oder adaptivem Intervall.Wir entwickeln eine mobile Applikation schlüsselfertig
IT Sectr entwickelt seit 2017 iOS- und Android-Apps für Startups und Unternehmen. Wir beraten Sie und schlagen die beste Lösung vor.
Lesen Sie auch