Partager cette discussion
Toute personne disposant du lien peut voir cette conversation.
Pour le jeu Milka, j'attends entre 2 500 et 3 000 joueurs connectés en même temps sur un classement en temps réel, surtout aux pics de midi et de la pause café. Je ne veux pas que chaque chargement de page lance une requête SQL qui reclasse toutes les réponses du formulaire. Comment je garde le classement à jour sans surcharger la base ?
Une question avant de partir sur une usine à gaz : est-ce qu'un classement en cache te conviendrait ? Les données auraient quelques secondes de retard, mais en contrepartie la base serait à peine sollicitée.
Le cache me va sur le principe, mais je veux que ça reste vivant : quand un joueur répond, il doit voir sa position bouger tout de suite, pas attendre le prochain rafraîchissement.
Alors combine les deux : un classement en cache pour tout le monde, et une mise à jour optimiste pour le joueur qui vient de répondre.
- Rafraîchis le cache à intervalle fixe, pas à chaque requête. Recalcule le classement complet toutes les 30 secondes en tâche de fond, et sers ce résultat à tout le monde. Aucun chargement de page ne déclenche de recalcul, personne ne tombe sur un cache vide, et la base reçoit une requête toutes les 30 secondes au lieu de plusieurs milliers.
- Simule le changement de position côté joueur. Dès qu'un joueur valide sa réponse, mets à jour son score en cache et affiche-le aussitôt à sa position estimée : le retour paraît instantané.
- Laisse le vrai classement reprendre la main. Au rafraîchissement suivant, sa position réelle remplace l'estimation, calculée avec les dernières réponses de tous les autres.
Chaque joueur a un retour immédiat et crédible, et le vrai classement reste léger à calculer et cohérent pour les 3 000.
Parfait, c'est exactement l'effet que je voulais.
Envoyer un email à Eliott
Écrivez votre message ici : il s'ouvrira dans votre messagerie.
Curriculum vitae d'Eliott Baylot
Document PDF téléchargeable.
CV d'Eliott
On fait connaissance ?
Juste pour qu'Eliott sache à qui il parle. Seul votre nom est obligatoire.
Claude est une IA et peut se tromper se trompe. Vérifiez ses réponses trois fois plutôt qu'une.