こんにちは、
ユーザーの都市に対応する Web ページの 1 つにユーザーをリダイレクトしたい (場所はユーザーの IP アドレスに基づいており、いくつかの IP ロケーション データベースを使用している)。
私の質問は、それを高速に動作させる方法は? たとえば、ウェブサイト gropoun では、ユーザーが訪問するたびに、即座にその都市のページに移動します。
ありがとう。
編集:PHPを使用しています
こんにちは、
ユーザーの都市に対応する Web ページの 1 つにユーザーをリダイレクトしたい (場所はユーザーの IP アドレスに基づいており、いくつかの IP ロケーション データベースを使用している)。
私の質問は、それを高速に動作させる方法は? たとえば、ウェブサイト gropoun では、ユーザーが訪問するたびに、即座にその都市のページに移動します。
ありがとう。
編集:PHPを使用しています
これをサーバー側とクライアント側のどちらで行いますか? クライアント側 (つまり、javascript を使用) の場合、多くの geoip サービスの 1 つを使用できます。特に Yahoo! の YGL は
また、ほとんどの言語またはフレームワークを使用してサーバー側で行うこともできます。サード パーティの geoip プロバイダーに対して API またはサービスの呼び出しを行うことも、データをデータベースにロードして独自のルックアップを行うこともできます。
また、すべての IP アドレスを特定できないため、地域または郵便番号を「デフォルト」にする必要があります。たとえば、私が現在取り組んでいる 1 つの Web アプリケーションには 95% の米国ユーザーがいて、デフォルトで国の地理的中心である 66952 に設定されています。
ルックアップサービスを使用してサーバー側のいくつかのクライアントに対してこれを行いましたhttp://ipinfodb.com/ip_location_api.php.
冗長なルックアップを行わないように、IP アドレスと場所をデータベースに保存することを忘れないでください。タイム ゾーン データを使用して、訪問者の地域を特定しました。
後で httpRequest からユーザー ip を決定する必要があります。たとえば、geoipなどのデータベースを使用します。
キャッシュ、キャッシュ、すべてをキャッシュします。ルックアップを IP テーブルにキャッシュし、個々のユーザーのセッションまたは Cookie の結果をキャッシュし、ページのレンダリングされたローカリゼーション情報部分 (または少なくともクエリ集中部分) をキャッシュします。
提供できる詳細は他にもありますが、それはすべて、ボトルネックが何であるかによって異なります。(結局のところ、ローカライズされた情報のレンダリングにボトルネックがある場合、ルーティング側で複雑なキャッシュを実装しても意味がありません。これは、DB 呼び出しの実行に約 0.5 秒かかるためです)。アプリケーションのボトルネックがどこにあるのか、どこにあるのかはわかりません。最初にプロファイルを作成する必要があります。次に、プロファイラーの指示に基づいて最適化します。