Ajax et surcharge de base de données
Bonjour,
Je cherche le moyen de plus élégant et efficace pour afficher une liste d'éléments en "temps réel", càd actualiser la page avec de l'AJAX toutes les secondes.
J'ai besoin d'afficher une 20aine d'éléments et ça implique donc de faire 1requête/seconde/client est-ce que ça ne risque pas de surcharger la base de données ?
Techniquement cette solution est en cours de développement mais j'ai peur que la base de données soit surchargée lorsqu'on multiplie le nombre de clients.
Merci,
Haelle
Création d'une variable d'application
Le moyen le plus simple qui me vient en tête :
- Dans ta table, ajoute un trigger afin de mettre à jour un flag dans une table tierce, qui indique quand la dernière modification a été faire.
=> Ou assure-toi que les traitements qui modifient la table fasse ce travail eux-même
Dans ton application, tu crées deux variables d'application.
- Une de type "date" qui contient l'heure de la dernière interrogation de la table.
=> A chaque chargement de page, tu testes si l'heure actuelle est > que cette variable. Si ce n'est pas le cas, tu récupère la seconde variable d'application. Sinon, tu réalimentes la seconde variable d'application.
- Une seconde de type string qui contient le résultat de la requête que tu veux faire tourner toutes les secondes.
=> Lorsque tu alimentes cette table, vérifie dans la table le flag pour voir s'il a changé. S'il n'a pas changé, alors tu n'as pas besoin de recharger la variable.
De cette façon, tu as :
- Une requête qui tourne 1 fois par seconde, dans une table qui ne contient qu'une ligne et qu'une colonne, quel que soit le nombre de clients connectés.
- Une requête dans ta table qui ne s'exécute que si tu as effectivement des données qui ont changé depuis la dernière lecture.
Ceci devrait donc :
- Décharger considérablement ta base de données
- Rendre ton application infiniment plus rapide