Intégrer une recherche IP-pays rapide dans votre stack
Un guide pratique pour ajouter la détection du pays à une application web : où l’appeler, comment la mettre en cache et comment éviter qu’elle ne ralentisse le parcours critique.
# Intégrer une recherche IP-pays rapide dans votre stack
La détection du pays ne devrait ajouter que quelques millisecondes à une requête. Voici comment conserver ce niveau de performance.
Commencez par récupérer la bonne IP client
Derrière un proxy ou un CDN, l’adresse de socket correspond souvent à votre propre infrastructure edge. Il faut donc lire l’en-tête réellement défini par votre architecture, et ne lui faire confiance que lorsqu’il provient de votre réseau :
- Cloudflare :
CF-Connecting-IP - La plupart des load balancers : la première entrée non fiable à gauche dans
X-Forwarded-For - Accès direct : l’adresse du pair socket
Analyser X-Forwarded-For sans précaution ouvre une faille d’usurpation, car un client peut y ajouter en tête la valeur de son choix.
Appelez le service une fois par session, pas à chaque requête
Effectuez la résolution à la création de la session, stockez le pays et la classification dans la session ou dans un cookie signé, puis réutilisez-les. Relancez la résolution lorsque l’IP change. Vous transformez ainsi des milliers d’appels potentiels en une seule recherche.
Mettez en cache avec un TTL raisonnable
La géolocalisation d’un /24 donné reste généralement stable pendant plusieurs heures. Un cache en mémoire d’une heure, indexé par IP, élimine l’essentiel du trafic répétitif. Mettez aussi en cache les résultats négatifs, avec un TTL plus court, afin qu’une indisponibilité ne se transforme pas en tempête d’appels.
Ne bloquez jamais le rendu à cause de cette recherche
Définissez un timeout strict de quelques centaines de millisecondes et prévoyez un comportement de repli clair :
ts const geo = await Promise.race([ lookup(ip), timeout(300).then(() => null), ]); const country = geo?.country ?? defaultCountry;
Une page affichée dans la mauvaise devise est un désagrément mineur. Une page qui ne s’affiche pas, c’est du chiffre d’affaires perdu.
Faites-le à l’edge lorsque c’est possible
Si votre application s’exécute sur un runtime edge, la recherche se fait géographiquement au plus près de l’utilisateur, avec une latence ajoutée négligeable. Résolvez l’information à cet endroit, attachez le résultat au contexte de la requête, puis laissez l’application le consommer comme une simple donnée.
Conservez la décision, pas la donnée brute
Stockez le résultat réellement utile à votre métier — devise affichée, règle appliquée — plutôt que l’enregistrement complet de localisation. C’est moins coûteux, plus simple à justifier auprès d’un responsable privacy, et c’est ce que vous interrogerez réellement par la suite.
