2011-05-29 40 views
0

我一直在为我公司开发家长控制软件程序,但遇到了问题。该软件使用存储在MySQL数据库中的策略列表来确定是否阻止网站。它使用本地代理。每次访问网站时,代理都会将该网站发送到服务器,然后服务器根据用户的设置确定网站是否应该被阻止。该软件已完成,但有一个主要问题。将地址发送到服务器需要很长时间,服务器返回代理的响应时间太长。使用该软件时,浏览速度会变慢很多。有一个更好的方法吗?家长控制软件

代理是用Python编写的,服务器端的所有内容都是用PHP完成的。

+0

什么部分花费很长时间?查询本身?网络时间过高?网址解析? – Mat 2011-05-29 18:12:24

+0

@Matt对数据库的查询运行顺利。它似乎是从客户端传递URL到服务器的时间太长。我使用POST和GET的urllib(不是两者之间有太大区别),也使用POST和GET的httplib。他们都没有足够快的工作。 – 2011-05-29 18:15:13

+0

您是通过网站或网址按网址发送网址吗?如果它是逐个站点,它不应该影响速度,因为您可以在最后缓存响应。 – JohnP 2011-05-29 18:15:28

回答

1

您是否在客户端本地缓存服务器的响应?如果不是,你应该 - 它应该大大加快速度。

如果你问你的服务器每个URL,你应该只询问域名,以便每个站点的请求数量从多个下降到只有一个。 (除非你只想禁止其中一部分的域名,但似乎不太可能。)

+0

因此,我缓存每个访问域的响应,从而加快浏览速度并限制发送到服务器的URL。应该如何将响应缓存在客户端? – 2011-05-29 18:33:05

+0

我只是将它们添加到'dict'中。将它们存储在磁盘上似乎过度杀毒,并且容易受到篡改。数据不会很大,除非有人访问了一百万个独立的域名。 (当它达到某个阈值时,你总是可以随意剔除一半的条目。) – RichieHindle 2011-05-29 18:36:40

+0

@RichieHindle,我明白了...非常好的主意。我会试一试并回来。 – 2011-05-29 18:43:59