2010-09-24 6 views
5

J'utilise rakismet pour rechercher les spams dans les commentaires.Contrôle du spam dans les rails

En ce moment, je le fais dans un callback before_create et je me demande dans un site de production, si c'est le moyen le plus efficace de le faire ou cela devrait être fait par un travail en arrière-plan.

Pouvez-vous partager votre expérience en termes de délai pour ajouter à la réactivité de vos applications de production?

Répondre

1

Je n'ai pas utilisé rakisment, mais un pré-traitement sur une action va la ralentir, et dans le cas de votre filtre anti-spams, elle ralentira de plus en plus car plus d'indicateurs de spam sont inclus dans le dictionnaire rakismet .

je recommande un processus en deux étapes:

  1. Dans le before_create, faire une vérification anti-spam minimum pour attraper les très évidentes. Vous pouvez rechercher des mots ("viagra", "cialis", "dette", etc), ainsi que vérifier que l'émetteur ne soumet pas beaucoup de commentaires très rapidement. Ce sera assez rapide et ne ralentira pas trop votre application.
  2. Dans un Delayed Job (l'une des bibliothèques de traitement en arrière-plan les plus connues pour Ruby), exécutez vos vérifications de rakismet. Ceux-ci peuvent supprimer/signaler les commentaires après le fait.

Cette solution limite le spam flagrante immédiatement, et finira par tirer parti des capacités de rakismet pour nettoyer les commentaires tout à fait, sans causer trop de pression ou de ralentir le système. Un avantage de cette approche est qu'il est extrêmement facilement à l'échelle de vos processus de travail différé, mais juste de commencer plus de travailleurs sur le même (ou différent) serveur (s). Cela signifie que votre application principale ne sera pas explorée, car le transfert de charges lourdes a été transféré à plusieurs instances du processus de travail.

+0

Merci. Existe-t-il un dictionnaire connu de ces mots de spam connus? – badnaam

+0

Non, il n'y a pas de dictionnaire standard partout, mais une recherche rapide sur Google va en trouver quelques-uns de différents sites. –