XML搜索或DB搜索/ javascript(客户端)或php(服务器端)计算

时间:2011-09-27 15:59:39

标签: php javascript xml performance xml-parsing

假设您的网站每天有200,000个唯一身份用户。所以,你的服务器负载很重/很重;并且您没有资源购买更大/更好的服务器。所以,你坚持自己拥有的东西。

现在,每当用户访问您的网站时,您需要进行一些计算(计算通过GeoIP检测到的用户城市与一些城市白名单之间的距离,找出距离最近的140英里范围内的城市)。

您可以通过PHP或JavaScript进行此计算吗?

首先,您是否会预先计算在列入白名单的城市140英里范围内的所有附近城市?例如:白名城1可以有20个附近的城市。或者你会每次都进行实时计算吗?

例如: Whitelist =密歇根州底特律市 和附近的城市=密歇根州卡拉马祖(140英里)

第二,如果预先计算:您会将其存储在 XML 文件或某些 MySQL 表中吗?现在,我们只需要搜索一个表(mysql或xml的大小不超过1 mb)。我猜这会低效,因为客户端浏览器(JavaScript)必须下载 1mb xml并搜索它。这会使页面加载时间更慢。使用数据库可能会更快,但随后数据库负载会增加(如果200,000个唯一身份用户试图在一天内加载页面)。

也许最好的方法是预计算以XML格式存储预先计算的结果,然后使用 PHP 搜索XML并找到最近的白名单城市用户?

1 个答案:

答案 0 :(得分:0)

如果您(该网站)实际上依赖于城市信息,那么您必须在服务器上进行计算。

数据库查询几乎总是比XML搜索足够大的XML文件更快。您可以优化查询,MySQL将缓存事物等。

预先计算所有城市 - 城市距离是一种可行的方法。 GeoIP不仅提供城市名称,还提供实际的纬度/经度位置。我确信可能的城市名单也会不断变化。

我会研究使用MySQL的geospacial功能。一般在坐标搜索视图:

Fastest Way to Find Distance Between Two Lat/Long Points

简而言之,您要做的是设置一个您关心的城市的数据库,使用纬度/经度,并根据提供的纬度/经度的GeoIP查询该表。