Bonjour,
Je m'occupe d'un portail immobilier qui propose aux visiteurs un système d'alerte mail.
Seulement voilà, nous avons de gros problèmes de performance et je voudrais savoir si un de vos experts avait des idées d'optimisation.
Le système est classique : les visiteurs saisissent d'abord le type de bien recherché ainsi que leur adresse mail. Ensuite, ils reçoivent automatiquement toutes les nouvelles annonces qui correspondent à leurs critères de recherche.
Pour les envois, voici la procédure actuellement utilisée :
- On sélectionne dans une vue les nouvelles annonces parues depuis le dernier envoi
- On prélève la liste des alertes à traiter avec leurs critères
- Pour chaque alerte, on interroge la vue pour voir si on y trouve des annonces répondant aux critères de recherche
- Si oui, on envoit un mail
- On passe à l'alerte suivante...
Le problème de performance vient du temps passé sur la boucle qui pour chaque alerte, envoit une requête de recherche dans la vue.
Peut importe qu'il y ait 3 000 nouvelles annonces dans la vue ou seulement 2. Le temps de traitement est pratiquement le même, puisqu'il y a autant de requêtes envoyées que d'alertes.
C'était acceptable au début, mais le problème prend de l'ampleur avec la montée en puissance du site et du nombre des alertes mails.
Le temps de traitement est encore tolérable pour un traitement quotidien (près 1h30), mais qui le devient nettement moins dès lors que le service marketing réclame la mise en place d'un système en quasi-temps réel : au moins 6 par jour, et de plus il faut anticiper une augmentation du nombre des alertes, qui ne va pas améliorer mes problèmes.
Quelles pistes me conseillez-vous de suivre pour optimiser tout ça ?
Je pensais commencer par essayer ceci : regrouper toutes les alertes dont les critères sont identiques pour faire des traitements groupés. Et réduire ainsi sensiblement le nombre de requêtes envoyées.
D'autres idées ?
Partager