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


XML search or DB search / javascript (client side) or php (server side) calculation

假设你的网站每天有200,000个独立用户。因此,您的服务器负载过重;你没有资源去买一个更大更好的服务器。所以,你被你所拥有的卡住了。

现在,当一个用户来到你的站点时,你需要做一些计算(计算通过GeoIP检测到的用户城市和一些城市白名单之间的距离,找出140英里半径内最近的城市)。

你会通过PHP还是通过JavaScript来做这个计算?

首先,你能预先计算出白名单城市140英里半径内的所有附近城市吗?例如:白名单城市1附近可以有20个城市。还是每次都做即时计算?

例如

:白名单=密歇根州底特律和附近的城市= Kalamazoo, MI(140英里)

,如果是预先计算的:你会把它存储在XML文件中还是存储在MySQL表中?现在,我们只需要搜索一个表(mysql或xml的大小不超过1mb)。我猜这将是低效的,因为客户端浏览器(JavaScript)将不得不下载1mb xml并通过它搜索。这将使页面加载时间更慢。使用DB可能会更快,但DB负载会增加(如果一天内有200,000个独立用户试图加载页面)。

也许最好的方法是执行precompute将预先计算的结果存储在XML中,然后使用PHP在XML中搜索并找到离用户最近的白名单城市。

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

对于足够大的XML文件,数据库查询几乎总是比XML搜索快。你可以优化查询,MySQL会缓存东西,等等。

预先计算所有城市与城市之间的距离肯定是一种方法。GeoIP不仅提供城市名称,还提供实际的经纬度位置。我相信可能的城市名单也在不断变化。

我会考虑使用MySQL的地理空间功能。这里按坐标搜索的总体视图:

找到两个点之间距离的最快方法

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