Short Polling — är en teknik för klient-serverinteraktion där klienten skickar HTTP-förfrågningar med fasta tidsintervall för att få uppdaterad data. Servern behandlar varje förfrågan omedelbart och returnerar aktuell status även om inga ändringar har skett. Enligt Amazon Web Services, 2024 är Short Polling den enklaste att implementera men den minst effektiva pollningsmetoden, som skapar överdriven belastning på servern och nätverket.
Huvudpunkter
Short Polling — är ett kommunikationsmönster där klienten periodiskt skickar HTTP-förfrågningar till servern med ett förinställt intervall, och servern behandlar varje förfrågan synkront och returnerar omedelbart resultatet. Pollningsintervallet ställs in på klientsidan med hjälp av timers och varierar vanligtvis från 1 till 60 sekunder, beroende på kraven på dataaktualitet.
Short Polling är kronologiskt den första mekanismen för att organisera realtid i webbapplikationer. I början av 2000-talet, innan XMLHttpRequest av andra generationen kom, använde webbsidor <meta http-equiv=”refresh”> eller periodisk omladdning av iframes för att uppdatera innehåll. Med tillkomsten av AJAX (Asynchronous JavaScript and XML) teknologi 2005 blev Short Polling standardmetoden för att uppdatera data utan att ladda om sidan helt.
Short Polling-arkitekturen innefattar tre komponenter: klienttimer, HTTP-förfrågan och serverhanterare. Klienten startar en intervalltimer, vid vars aktivering en GET-förfrågan skickas till servern. Servern utför en fråga mot databasen eller annan källa, skapar ett svar och returnerar det omedelbart till klienten. Klienten uppdaterar gränssnittet och väntar på nästa timeraktivering. Denna cykel upprepas oändligt så länge applikationen är aktiv.
Huvudproblemet med Short Polling — oundvikliga tomma förfrågningar. Om data ändras sällan returnerar de flesta förfrågningar resultatet „inga ändringar”, vilket slösar nätverksbandbredd och processortid på bearbetning. Med 10 000 klienter och ett pollningsintervall på 5 sekunder tar servern emot 2 000 förfrågningar per sekund — en betydande del är oanvändbar om uppdateringsfrekvensen är 1 händelse per minut.
Short Polling fungerar enligt en enkel cykel: klienten ställer in en intervalltimer med en viss period (t.ex. 5000 ms). Vid varje timeraktivering skapar klienten en HTTP GET-förfrågan till serverns slutpunkt, vanligtvis med en parameter för tidsstämpeln för senaste uppdatering. Servern tar emot förfrågan, kontrollerar om det finns nya data efter angiven tidsstämpel och returnerar ett svar — antingen med nya data eller med en indikering att inga uppdateringar finns.
Den kritiska konfigurationsparametern för Short Polling — pollningsintervallet. Ett för kort intervall (mindre än 3 sekunder) skapar hög belastning på servern och nätverket. Ett för långt intervall (över 30 sekunder) minskar dataaktualiteten. Optimalt intervall beror på scenariot: för övervakningspaneler — 5–15 sekunder, för nyhetsflöden — 30–60 sekunder, för kritiska larm — 1–3 sekunder. Valet av intervall är alltid en kompromiss mellan dataaktualitet och infrastrukturbelastning.
För att minska belastningen vid inaktivitet används ett adaptivt intervall: om flera på varandra följande förfrågningar returnerar ett tomt resultat ökas intervallet (t.ex. från 5 till 15 sekunder). När nya data dyker upp återställs intervallet till minimivärdet. Algoritmen för exponentiell fördröjning (exponential backoff) kan minska antalet tomma förfrågningar 3–5 gånger vid sällsynta uppdateringar.
Låt oss titta på klientimplementeringen av Short Polling med setInterval och Fetch API. Funktionen tar emot URL:en till slutpunkten och pollningsintervallet i millisekunder.
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("Mottaget", data.updates.length, "updates");
}
} catch (error) {
console.error("Pollning misslyckades:", error);
}
}, intervalMs);
return timerId;
}
const timer = startPolling("/api/updates", 5000);
// clearInterval(timer) för att stoppa
Koden skapar ett pollningsintervall med en period på 5 sekunder och skickar tidsstämpeln för senaste uppdatering till servern. Servern kan använda denna parameter för att filtrera data och endast returnera nya poster, vilket minskar mängden överförd information. Funktionen returnerar timeridentifieraren för att kunna stoppa pollningen.
Serverimplementeringen för Short Polling är extremt enkel — det är en vanlig REST-endpoint som tar emot GET-förfrågningar och returnerar ett JSON-svar med aktuell status eller data som ändrats efter angiven tidsstämpel.
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);
Servern tar emot parametern since och filtrerar poster vars tidsstämpel överstiger det angivna värdet. Detta tillvägagångssätt minimerar datamängden i varje svar genom att endast returnera inkrementella ändringar. När inga nya data finns returnerar servern en tom array och klienten fortsätter pollningen enligt schemat.
Short Polling och Long Polling löser samma uppgift — leverans av data från servern — men skiljer sig radikalt i effektivitet. Short Polling använder ett fast förfrågningsintervall och skapar förutsägbar belastning, medan Long Polling håller anslutningen öppen tills en händelse inträffar, vilket minimerar antalet tomma svar.
| Kriterium | Short Polling | Long Polling |
|---|---|---|
| Implementeringskomplexitet | Låg, standard REST | Medel, asynkron bearbetning |
| Uppdateringsfördröjning | Fast, upp till N sekunder | Minimal, när händelse inträffar |
| Antal förfrågningar | Konstant, N förfrågningar per minut | Efter händelser, vanligtvis mycket färre |
| Serverbelastning | Hög vid litet intervall | Hålla anslutningar, asynkron bearbetning |
| Trafik vid inaktivitet | Maximal, varje förfrågan med huvuden | Minimal, en öppen anslutning |
| Skalbarhet | Enkel, tillståndslösa förfrågningar | Komplex, kräver gemensam händelsekö |
Valet mellan tekniker beror på uppdateringsfrekvensen för data. Om händelser inträffar oftare än en gång var 10:e sekund — båda metoderna ger jämförbar belastning och Short Polling kan vara enklare. Om händelser är sällsynta (timmar eller minuter mellan ändringar) — är Long Polling att föredra eftersom det inte skapar tomma förfrågningar. För mellanliggande scenarier beror valet på infrastrukturella begränsningar och möjligheten att använda WebSocket.
Short Polling används i scenarier där kraven på dataaktualitet är låga och implementeringsenkelhet prioriteras framför effektivitet. De mest typiska fallen är interna administrationspaneler, övervakningssystem med låg larmfrekvens och applikationer där en fördröjning på 15–30 sekunder är acceptabel.
Viktig begränsning — Short Polling är inte lämpligt för tidskritiska applikationer (handelsterminaler, nödvarningssystem), där en fördröjning på även 1 sekund är oacceptabel. I sådana scenarier måste WebSocket, Server-Sent Events eller Long Polling användas. Vid utformning av ett system med Short Polling måste förfrågningsbudgeten beräknas: med 1 000 klienter och ett intervall på 5 sekunder bearbetar servern 12 000 förfrågningar per minut, vilket kräver en lämplig resursbas.
Vanliga frågor
Short Polling — är när applikationen varje N sekund frågar servern: ”är det nya data?”, och servern svarar varje gång, även om inget har ändrats. Det är som att gå till brevlådan var 5:e minut för att se om det kommit ny post.
Det optimala Short Polling-intervallet beror på scenariot: 5–10 sekunder för övervakningspaneler, 15–30 sekunder för nyhetsflöden, 30–60 sekunder för statussidor. Intervallet bör vara en kompromiss mellan dataaktualitet och serverbelastning. Börja med 10 sekunder och justera efter testresultat.
Short Polling — klienten ”drar” ständigt i servern med fast intervall. Long Polling — klienten gör en förfrågan och servern håller den öppen tills data dyker upp. Short Polling är enklare att implementera men skapar fler tomma förfrågningar vid sällsynta uppdateringar.
Short Polling är enklare att implementera än WebSocket och kräver inget speciellt protokoll — det fungerar via vanliga HTTP-förfrågningar. Short Polling är motiverat för enkla interna system där en fördröjning på 10–30 sekunder är acceptabel och infrastrukturkostnaderna för att underhålla WebSocket är omotiverade.
Använd adaptivt intervall: när inga uppdateringar sker, öka pausen mellan förfrågningarna 2–3 gånger. Lägg till parametern since med tidsstämpeln för den senaste förfrågan, så att servern endast returnerar inkrementella ändringar. Cachelagra svar på CDN- eller proxyserversidan för att minska backend-belastningen.
Sammanfattning
setInterval eller rekursiv setTimeout med konstant eller adaptivt intervall.Vi utvecklar en mobil applikation nyckelfärdigt
IT Sectr skapar iOS- och Android-applikationer för startups och företag sedan 2017. Vi ger dig råd och föreslår den bästa lösningen.
Läs också