3

私は RoR 開発者で、自分の Web サイトのDAUを計算したいと考えています。DAU とは、次のことを意味します。

DAU - 私の Web サイトにアクセスしてログインしたユーザー、または Web サイトにアクセスして既にログインしているユーザーの合計数。

current_sign_in_at を追跡するため、Web サイトにDeviseを実装しました。そして後で、これらの属性が次のように意味することがわかりました。

current_sign_in_at - その人が私のウェブサイトに最後にログインした時刻。(これを使用して、私の Web サイトにアクセスしてログインした人の数を取得できます。)

しかし、ウェブサイトに来て、すでにログインしている人の数がわかりません。

それを実装するために私が見つけた方法の 1 つは、ルート アクションが呼び出され、Web サイトのホームページが読み込まれるたびにタイムスタンプを更新する遅延ジョブの関数をトリガーすることです。しかし、私のウェブサイトは 1 分間に 1000 ~ 2000 件のアクセスがあるため、この機能がボトルネックになると思います。

誰でもそれを実装するための最良の方法を教えてください。

どうもありがとう。

4

1 に答える 1

0

可能な解決策:

  • Google アナリティクス (カスタム変数)、KISSmetrics (訪問者 ID)、Mixpanel (distinct_id) などのサービスを使用してユーザー ID を送信すると、毎日のアクティブ ユーザーを見つけることができます。

  • あなたが言及したようなことをすることができます.リクエストを受け取るたびにユーザーの最後のアクティブ時間をデータベースに保存します.1分あたり1000-2000ヒットを取得する場合は、redisのようなメモリ内ストアに保存することをお勧めします.代わりは。ユーザーがルート URL だけでなく、さまざまなパスから Web サイトにアクセスする場合は、ユーザーの現在の時刻で redis ストアを更新するアプリケーション コントローラーで after_filter を作成できます。

  • 将来、1 日あたりのアクティブ ユーザー数だけでなく、さらに多くのユーザーを調べたい場合は、別のデータベースにユーザーのログを作成することをお勧めします。ここでも、時間、user_id、その他の関心のあるデータを格納するジョブをキューに入れる application_controller の before または after_filter をお勧めします。これを行うために、ActiveRecord MySQL データベースとは別の mongo db を使用しています。

于 2012-12-14T23:28:17.597 に答える