11

ユーザーの国を検出する必要がありますが、外部サービスへの呼び出し全体を避けて、IP または内部データベースに基づいて場所を取得しようとしています。このサービスを本当に応答性の高いものにする必要があり、外部サービスを照会するのにほぼ 0.5 秒かかるため、それを回避しようとしています。また、データベースへの呼び出しは、このアプローチではコストがかかります。ページが 20 ミリ秒以内に応答する必要があります。

Accept_languageヘッダーに基づいて国のロケールを取得することを考えています。

私の質問はです。これがどれほど正確か知っている人はいますか?国が常に存在するとは限らないこと、またはユーザーがデフォルトの言語を変更したり、コンピューターで別の国に存在したりする可能性があることは承知しています.

誰かが以前に経験したことがありますか、またはこのアプローチを使用して精度またはエラーの割合を指定するドキュメント (グーグルまたは w3 ページで見つけることができませんでした) はありますか?

4

3 に答える 3

7
  • 言語設定によってユーザーの国を検出することは、悪い考えであり、愚かな考えです。私はドイツ出身で、ブラウザ/携帯電話またはOSをドイツ語以外の言語で使用している人をたくさん知っています。ブラウザによって送信された言語をチェックし、ドイツ語でない場合は機能しない配信サービスがいくつかあります。私が二度と注文しない場所を推測します。
  • IPによって言語を簡単に検出します。IPを国に変換するいくつかの(無料の)サービスが利用可能です。
    例: http: //www.maxmind.com/app/geolite。Web API、インストールできるサーバー、またはデータベース全体を取得して独自に実装できるサーバーがあります。また、さまざまなWebサーバー用のモジュール/ヘルパーがたくさんあり、大規模なコーディングは必要ありません。( Apacheの場合はhttp://www.maxmind.com/app/mod_geoipを参照してください。これにより、訪問者の国がHTTPヘッダーとして埋め込まれます。)
    DBの結果はキャッシュされ、必要に応じて十分に高速である必要があります。20msは非常に高速です。パッケージがサーバーに到達し、その後完全に戻るためにすべての時間が無駄になっていることを考えると、;-)
于 2012-06-11T21:50:36.483 に答える
2

ローカル DB の使用のみをお勧めします。以下の無料データベースを 5 年以上使用しています。zipをダウンロードするだけです。DB をロードする前に cvs を mysql データに変換する必要があるかもしれませんが、それは簡単です。

http://ip-to-country.webhosting.info/node/view/6

定期的に更新されます。また、どのサーバー/ブラウザー構成よりも正確です。

http://ip-to-country.webhosting.info/node/view/118で使用するための PHP ベースのガイド。それは非常に簡単です!

編集: OK、見ました (最終更新日 2010 年 12 月 14 日)。あなた次第です...

于 2012-06-11T21:27:56.377 に答える