2011-05-29 2 views
0

J'ai développé un logiciel de contrôle parental pour mon entreprise, mais j'ai rencontré un problème. Le logiciel utilise des listes de politiques stockées dans une base de données MySQL pour déterminer s'il faut ou non bloquer un site Web. Il utilise un proxy local. Chaque fois qu'un site Web est visité, le proxy envoie ce site au serveur, puis le serveur détermine si le site doit être bloqué ou non en fonction des paramètres de l'utilisateur. Le logiciel est terminé, mais il y a un problème majeur. Cela prend trop de temps pour que l'adresse soit envoyée au serveur, et la réponse du serveur pour revenir au proxy. La vitesse de navigation est beaucoup ralentie lors de l'utilisation du logiciel. Y a-t-il une meilleure manière de faire cela?Logiciel de contrôle parental

Le proxy est écrit en Python et tout ce qui se passe sur le serveur se fait en PHP.

+0

Quelle partie prend du temps? les requêtes elles-mêmes? temps de réseau trop élevé? url analyse? – Mat

+0

@Matt Les requêtes vers le DB s'exécutent en douceur. Il semble que le passage des URL au serveur du client prend trop de temps. J'ai utilisé urllib pour POST et GET (pas qu'il y ait beaucoup de différence entre les deux) et aussi httplib pour POST et GET. Aucun d'eux n'a travaillé assez vite. –

+0

Envoyez-vous l'URL sur un site par site ou URL par URL? Si c'est un site par site, cela ne devrait pas affecter la vitesse car vous pourriez mettre en cache la réponse de votre côté. – JohnP

Répondre

1

Mettez-vous en cache les réponses du serveur localement sur le client? Sinon, vous devriez - cela devrait accélérer considérablement les choses.

Et si vous demandez à votre serveur à propos de chaque URL, vous ne devriez poser des questions sur le nom de domaine, de sorte que le nombre de demandes par site passe de lots à un seul. (À moins qu'il y ait des domaines pour lesquels vous voulez seulement en interdire une partie, mais cela semble improbable.)

+0

Donc, je cache les réponses pour chaque domaine visité, accélérant ainsi la vitesse de navigation et limitant les URL envoyées au serveur. Comment les réponses doivent-elles être mises en cache du côté client? –

+0

Je voudrais juste les ajouter à un 'dict'. Les stocker sur le disque semble être trop lourd, et est vulnérable à la falsification. Et les données ne seront pas très grandes, sauf si quelqu'un visite un million de domaines distincts. (Vous pouvez toujours ramasser au hasard la moitié des entrées quand il arrive à un certain seuil.) – RichieHindle

+0

@RichieHindle, je vois ... très bonne idée. Je vais essayer et revenir. –

Questions connexes