尝试确定 GeoIP 查找的最佳解决方案。
选项似乎是:
1.下载高级数据库并进行查找
2.下载免费数据库并进行查找
3. 使用免费的 Web API
4. 使用付费网络 API。
我们必须在用户登录时执行此操作,因此这种情况会经常发生。
一个重要的问题是 IP 地址位置是否发生变化,如果发生变化,频率如何。例如,我们可以使用免费的 Web API 构建我们自己的数据库,存储它返回给我们的每个 IP 位置,但这只有在它们相对持久的情况下才可行。
此外,我们查看的付费数据库每月更新一次,这可能还不够,具体取决于这些更改是否/频率如何。
谢谢!
最佳答案
无法保证某个位置的 IP 持久性如何。事实上,有些公司充当 IPv4 地址的经纪人,因为我们的 IPv4 地址开始不足。 MIT 拥有的 18.0.0.0/8 可能已经在一个地方呆了 30 年了。其他人可能搬家的次数更多。
就维护来自某种 Web API 的地址的本地缓存而言,我建议不要这样做。如果您执行 1:1 IP->lat/long 表,则总共有 2^32 个条目,每个条目 50 字节 = 200GB。显然,这些可以被压缩到子网等中,但现在您开始做 GeoIP 公司非常擅长的工作,并且拥有显着的领先优势。 Debian 附带的免费 IP->国家数据库仅安装在我的机器上 5MB。
从程序员生产力的角度来看,在速度和可靠性方面,很难用客户端库击败可下载数据库。
MaxMind 拥有 IP->国家和 IP->城市的免费数据库,但您必须在您的网站/产品上添加通知,例如“该产品包括由 MaxMind 创建的 GeoLite 数据,可从 http://www.maxmind.com 获取”。商业决策多于技术决策。
关于database - GeoIP 查找——选项和数据持久性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13654073/