3

数か月でさまざまな国からのトラフィックが発生する Web サイトがありますが、どの Web サイトを表示するかは国によって異なります。

現時点では、無料の maxmind GeoIp と php を使用してトラフィックをリダイレクトしています。

しかし、1 日に 40,000 のユニーク ユーザーがいて、1 日に約 100,000 のリクエストがあると、これは非常に遅くなると思います。

.htaccess でやろうと思ったのですが、もう少しリクエスト時間がかかりそうです。

私の最終的なアイデアは、us.website.com のように、国に応じて異なるフォルダー (またはサブドメイン) のサイトの html にホームを構築し、ユーザーをそこにリダイレクトすることでしたが、どちらが正しいかわかりません。ユーザーエクスペリエンスのために最速。

サーバーはLAMPです(ディストリビューションを選択できます)

私が決めるのを手伝ってください!! すべてに感謝します!

4

2 に答える 2

1

ダウンロードされた MaxMind GeoIP Country データベース (無料または有料、違いはありません) は、PHP からアクセスすると非常に高速です (たとえ PHP コードが最適化されていなくても - 優れた C コードからの変換が非常に悪いことは明らかです)。

マシンで時間を計るだけで (たとえば、現実的なデータセットを使用した への 2 回の呼び出しの差によってmicrotime(true))、国に切り替えるために、コードの先頭にある GeoIP DB にアクセスする余裕があることがわかるでしょう。必要に応じて特定のコード。

次のステップでは、国コード Cookie を使用します。ユーザーが既に Cookie を持っている場合は、それを使用して国固有のコードに切り替えます。それ以外の場合は、GeoIP DB にアクセスして国コードを特定し、Cookie を設定して、通常どおり切り替えます (ユーザーが Cookie を受け入れなくても機能します)。 . セッション Cookie にすると、ユーザーが移動する可能性があります。ページのキャッシュがある場合は注意してください: 国コード Cookie を無視してはなりません。

あなたの質問はリダイレクトについて言及していますが、これは国固有のものである可能性がありheader('Location: ...');ますが、おそらくそれなしで行う必要があります.それは物事をより複雑にし、トラフィックを少し増加させるからです.

于 2012-06-16T22:58:35.670 に答える
1

さて、あなたは心配しすぎていると思いますが、説明しましょう。

  1. IP -> 国はハッシュ テーブルなので、クエリを解決するのに少し時間がかかると思います
  2. これは静的な情報であり、解決されたらキャッシュできます
  3. 40,000 ユーザーの 100,000 ページ ビューは、2.5 ページ ビューあたり 1 ユーザー、「短い」ナビゲーション履歴を意味します (後で説明します)。

この状況では、次のことをお勧めします。

  1. PHPを使用してDBにクエリを実行し(コードを実行の「ヘッド」に入れます)、国をCookieに保存/キャッシュし、リクエストを処理します. 単純なif(empty($COOKIE['country']))を使用すると、DB にクエリを実行するかどうかを理解できます
  2. 別のサイト (us.domain.com) へのリダイレクトを回避すると、ユーザーごとに 2.5 から 3.5 のリクエストが渡されます (最大 40% 以上)。
  3. サイトにさらにリソースが必要な場合は、追加してクラウド リソースを増やすか、同じアドレス (www.domain.com) で DNS ラウンド ロビンを実行する新しい IP を持つ新しいマシンを追加して、短いナビゲーション履歴でうまく機能します。

PS

$_SESSION をクラスター化する場合、共有が実際の課題になるため、今からセッションマネージャーに目を向けることができます

于 2012-06-17T00:02:08.950 に答える