accept_language检测国家的准确性

Mar*_*tin 11 http geolocation http-accept-language

我需要检测用户所在的国家/地区,但我正在尝试避免整个外部服务调用以获取基于IP或内部数据库的位置.我需要使这项服务真正响应,查询任何外部服务几乎需要半秒钟,所以我试图避免这种情况.对于这种方法,任何对数据库的调用都是昂贵的.我需要页面在不到20ms的时间内响应.

我正在考虑根据Accept_language标题获取国家/地区语言环境.

我的问题是.有谁知道这有多准确?我知道国家并不总是存在,或者用户可能会更改默认语言或与其计算机出现在不同的国家/地区.

有没有人有过以前的经验或有任何文档(我找不到一个谷歌搜索或w3页面)指定使用这种方法的准确度或错误的百分比?

The*_*ppo 7

  • 通过语言设置检测用户国家只是一个糟糕愚蠢的想法.我来自德国,我认识很多人使用他们的浏览器/手机或操作系统用其他语言然后德语.我知道有一些传送服务可以检查浏览器传送的语言,如果不是德语则不起作用.猜猜我再也不会订购.
  • 通过IP简单检测语言.有一些(甚至是免费的)服务可以将IP转换为一个国家.
    例如:http://www.maxmind.com/app/geolite.他们有一个Web API,一个你可以安装的服务器,或者只是抓住整个数据库并自己实现它.此外,还有许多用于各种Web服务器的模块/帮助程序,不需要任何大量编码.(请参阅:http://www.maxmind.com/app/mod_geoip for Apache,它将访问者的国家/地区作为HTTP标头嵌入.)
    数据库结果被缓存,并且应该足够快,以满足您的需求.20ms是非常快的,如果你想到所有的时间都浪费了包到达你的服务器,然后整个回来;-)

  • 使用浏览器语言是一种非常简单的实现,不需要任何费用,也不需要定期更新.IP检测也可以完全关闭,特别是"轻量级"Maxmind数据库的目的是不准确的,因此当它们关闭时,如果它停留在同一个大陆上,你会很幸运.许多德国移动IP在俄罗斯注册.;-)我发现这个页面正在寻找一些硬统计数据,因为我觉得浏览器语言的国家部分可能适用于预先选择表单中的国家/地区,用户仍然可以纠正错误. (2认同)