2

试图确定 GeoIP 查找的最佳解决方案。

选项似乎是:
1. 下载高级数据库并进行查找
2. 下载免费数据库并进行查找
3. 使用免费的 Web API
4. 使用付费的 Web API。

我们将不得不在用户登录时执行此操作,因此它会经常发生。

一个重要的问题是 IP 地址位置是否改变,如果改变,频率如何。例如,我们可以使用免费的 Web API 构建自己的数据库,存储它返回给我们的每个 IP 位置,但这只有在它们相对持久的情况下才可行。

此外,我们正在查看的付费数据库每月更新一次,这取决于这些更改是否/多久,可能还不够。

谢谢!

4

1 回答 1

3

无法保证某个位置的持久 IP 有多长。实际上有一些公司充当 IPv4 地址的经纪人,因为我们的 IPv4 地址已经开始不足。MIT 拥有的 18.0.0.0/8 可能已经在一个地方存在了 30 年。其他人可能已经移动了很多。

至于维护来自某种 Web API 的地址的本地缓存,我建议不要这样做。如果你做一个 1:1 IP->lat/long 表,那么你说的是总共 2^32 个条目,每个条目 50 个字节 = 200GB。显然,这些可以被压缩到子网等中,但现在你开始做 GeoIP 公司非常擅长的工作并且有一个重要的开端。Debian 附带的免费 IP->Country 数据库仅安装在我的机器上 5MB。

从程序员生产力的角度来看,很难在速度和可靠性方面击败具有客户端库的可下载数据库。

MaxMind 拥有 IP->Country 和 IP->City 的免费数据库,但您必须在您的网站/产品上注明“此产品包含 MaxMind 创建的 GeoLite 数据,可从http://www.maxmind.com获得”与其说是技术决策,不如说是商业决策。

于 2012-12-06T16:27:30.297 回答