Short Polling est une technique de communication client-serveur où le client envoie des requêtes HTTP à intervalles fixes pour recevoir des données mises à jour. Le serveur traite chaque requête immédiatement, renvoyant l'état actuel même si rien n'a changé. Selon Amazon Web Services, 2024, le Short Polling est la méthode de polling la plus simple à implémenter mais la moins efficace, créant une charge excessive sur le serveur et le réseau.
Points clés
Short Polling est un modèle de communication où le client envoie périodiquement des requêtes HTTP au serveur à un intervalle prédéfini, et le serveur traite chaque requête de manière synchrone et renvoie le résultat immédiatement. L'intervalle de polling est défini côté client à l'aide de minuteurs et varie généralement de 1 à 60 secondes selon les exigences de fraîcheur des données.
Le Short Polling est historiquement le premier mécanisme pour organiser la communication en temps réel dans les applications web. Au début des années 2000, avant la deuxième génération de XMLHttpRequest, les pages web utilisaient <meta http-equiv="refresh"> ou le rechargement périodique d'iframe pour mettre à jour le contenu. Avec l'avènement de la technologie AJAX (Asynchronous JavaScript and XML) en 2005, le Short Polling est devenu l'approche standard pour mettre à jour les données sans recharger complètement la page.
L'architecture du Short Polling comprend trois composants : un minuteur client, une requête HTTP et un gestionnaire serveur. Le client démarre un minuteur d'intervalle, et à chaque déclenchement, une requête GET est envoyée au serveur. Le serveur interroge une base de données ou une autre source, forme une réponse et la renvoie immédiatement au client. Le client met à jour l'interface et attend le déclenchement suivant du minuteur. Ce cycle se répète indéfiniment tant que l'application est active.
Le principal problème du Short Polling est les inévitables requêtes vides. Si les données changent rarement, la plupart des requêtes renvoient un résultat « sans changement », gaspillant la bande passante réseau et le temps CPU pour le traitement. Avec 10 000 clients avec un intervalle de polling de 5 secondes, le serveur reçoit 2 000 requêtes par seconde — dont une partie significative est inutile si la fréquence de mise à jour est de 1 événement par minute.
Short Polling fonctionne selon un cycle simple : le client définit un minuteur d'intervalle avec une période déterminée (par exemple, 5000 ms). À chaque déclenchement du minuteur, le client forme une requête HTTP GET vers l'endpoint du serveur, généralement avec un paramètre d'horodatage de la dernière mise à jour. Le serveur reçoit la requête, vérifie la présence de nouvelles données après l'horodatage spécifié et renvoie une réponse — soit avec de nouvelles données, soit avec un indicateur d'absence de mises à jour.
Un paramètre critique de configuration du Short Polling est l'intervalle de polling. Un intervalle trop court (moins de 3 secondes) crée une charge élevée sur le serveur et le réseau. Un intervalle trop long (plus de 30 secondes) réduit la fraîcheur des données. L'intervalle optimal dépend du scénario : pour les tableaux de bord de surveillance — 5–15 secondes, pour les flux d'actualités — 30–60 secondes, pour les alertes critiques — 1–3 secondes. Le choix de l'intervalle est toujours un compromis entre la fraîcheur des données et la charge sur l'infrastructure.
Pour réduire la charge pendant l'inactivité, on utilise un intervalle adaptatif : si plusieurs requêtes consécutives renvoient un résultat vide, l'intervalle augmente (par exemple, de 5 à 15 secondes). Lorsque de nouvelles données apparaissent, l'intervalle est réinitialisé à la valeur minimale. L'algorithme de backoff exponentiel (exponential backoff) permet de réduire le nombre de requêtes vides de 3 à 5 fois lors de mises à jour peu fréquentes.
Examinons une implémentation côté client du Short Polling utilisant setInterval et Fetch API. La fonction prend l'URL de l'endpoint et l'intervalle de polling en millisecondes.
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("Reçu", data.updates.length, "updates");
}
} catch (error) {
console.error("Échec du polling :", error);
}
}, intervalMs);
return timerId;
}
const timer = startPolling("/api/updates", 5000);
// clearInterval(timer) pour arrêter
Le code crée un intervalle de polling de 5 secondes et transmet l'horodatage de la dernière mise à jour au serveur. Le serveur peut utiliser ce paramètre pour filtrer les données et ne retourner que les nouveaux enregistrements, réduisant ainsi la quantité d'informations transmises. La fonction retourne l'identifiant du minuteur pour permettre l'arrêt du polling.
L'implémentation côté serveur pour le Short Polling est extrêmement simple — c'est un endpoint REST ordinaire qui accepte les requêtes GET et retourne une réponse JSON avec l'état actuel ou les données modifiées après l'horodatage spécifié.
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);
Le serveur reçoit le paramètre since et filtre les enregistrements dont l'horodatage dépasse la valeur spécifiée. Cette approche minimise la quantité de données dans chaque réponse, en ne retournant que les modifications incrémentielles. Lorsqu'il n'y a pas de nouvelles données, le serveur retourne un tableau vide et le client continue le polling selon le calendrier prévu.
Short Polling et Long Polling résolvent le même problème — la livraison des données du serveur au client — mais diffèrent radicalement en efficacité. Short Polling utilise un intervalle de requête fixe, créant une charge prévisible, tandis que Long Polling maintient la connexion ouverte jusqu'à ce qu'un événement se produise, minimisant le nombre de réponses vides.
| Critère | Short Polling | Long Polling |
|---|---|---|
| Complexité d'implémentation | Faible, REST standard | Moyenne, traitement asynchrone |
| Latence des mises à jour | Fixe, jusqu'à N secondes | Minimale, à l'occurrence de l'événement |
| Nombre de requêtes | Constant, N requêtes par minute | Par événement, généralement beaucoup moins |
| Charge serveur | Élevée avec intervalle court | Maintien des connexions, traitement asynchrone |
| Trafic en inactivité | Maximum, chaque requête avec en-têtes | Minimal, une connexion ouverte |
| Scalabilité | Simple, requêtes sans état | Complexe, nécessite une file d'événements partagée |
Le choix entre les techniques dépend de la fréquence de mise à jour des données. Si les événements se produisent plus d'une fois toutes les 10 secondes — les deux approches génèrent une charge comparable, et Short Polling peut être plus simple. Si les événements sont rares (heures ou minutes entre les changements) — Long Polling est préférable car il ne crée pas de requêtes vides. Pour les scénarios intermédiaires, le choix dépend des contraintes d'infrastructure et de la possibilité d'utiliser WebSocket.
Short Polling est utilisé dans les scénarios où les exigences de fraîcheur des données sont faibles et la simplicité d'implémentation a priorité sur l'efficacité. Les cas les plus typiques sont les panneaux d'administration internes, les systèmes de surveillance à faible fréquence d'alertes et les applications où un délai de 15 à 30 secondes est acceptable.
Limitation importante — Short Polling n'est pas adapté aux applications critiques en termes de temps (terminaux de trading, systèmes d'alerte d'urgence) où même un délai d'une seconde est inacceptable. Dans de tels scénarios, il est nécessaire d'utiliser WebSocket, Server-Sent Events ou Long Polling. Lors de la conception d'un système avec Short Polling, il faut calculer le budget de requêtes : avec 1 000 clients avec un intervalle de 5 secondes, le serveur traite 12 000 requêtes par minute, ce qui nécessite une base de ressources correspondante.
Foire aux questions
Short Polling est lorsqu'une application demande au serveur toutes les N secondes : « y a-t-il de nouvelles données ? », et le serveur répond à chaque fois, même si rien n'a changé. C'est comme aller à votre boîte aux lettres toutes les 5 minutes pour vérifier si un nouveau courrier est arrivé.
L'intervalle optimal de Short Polling dépend du scénario : 5–10 secondes pour les tableaux de bord de surveillance, 15–30 secondes pour les flux d'actualités, 30–60 secondes pour les pages de statut. L'intervalle doit être un compromis entre la fraîcheur des données et la charge serveur. Commencez par 10 secondes et ajustez en fonction des résultats des tests.
Short Polling — le client interroge constamment le serveur à intervalle fixe. Long Polling — le client fait une requête et le serveur la maintient ouverte jusqu'à l'apparition de données. Short Polling est plus simple à implémenter mais crée plus de requêtes vides lors de mises à jour peu fréquentes.
Short Polling est plus simple à implémenter que WebSocket et ne nécessite pas de protocole spécial — il fonctionne via des requêtes HTTP ordinaires. Short Polling est justifié pour les systèmes internes simples où un délai de 10–30 secondes est acceptable et les coûts d'infrastructure pour supporter WebSocket ne sont pas justifiés.
Utilisez un intervalle adaptatif : en l'absence de mises à jour, augmentez la pause entre les requêtes de 2 à 3 fois. Ajoutez le paramètre since avec l'horodatage de la dernière requête pour que le serveur ne retourne que les modifications incrémentielles. Mettez en cache les réponses du côté CDN ou serveur proxy pour réduire la charge sur le backend.
Résumé
setInterval ou setTimeout récursif avec intervalle constant ou adaptatif.Nous développerons une application mobile clé en main
IT Sectr crée des applications iOS et Android pour les startups et les entreprises depuis 2017. Nous vous conseillerons et vous proposerons la meilleure solution.
Lisez aussi