2

ExpressJs と MongoDB を使用しています。許可されていないユニーク ユーザーが特定のイベント ページを開いた数を表示したいと考えています。
このリクエストカウンターをどのように実装すればよいですか?
IP アドレスを確認するか、Cookie にマークを追加してください...

4

1 に答える 1

2

Cookieを使用して、次のようなことができます。

app.use(express.cookieParser());
app.use(function(req, res, next) {
  req.cookies['track_id'] ||= require('connect').utils.uid(32);
  next();
});

これで、すべてのサイトで Cookie の ID をプッシュするだけで済みます。

app.use(function(req, res, next) {
  if(!req.isAuthenticated()){
    statistics.findAndModify(
      {_id: req.url},
      {},
      {$addToSet: {ids: req.cookies['track_id']}},
      {upsert:true}
    );
  }
  next();
});

次に、mongodb データベースでクエリを実行できます。フィールドにインデックスを付けた場合ids、1 つの ID を照会して、アクセスした URL も確認できます。訪問者数は配列の長さです。

you に置き換える$addToSet$push、サイト上のユーザーも 2 回追跡されます。

もちろん、人々がクッキーを削除すると、それはすべて崩壊します ^^

これはテストされていないことに注意してください。また、プレーンを使用したと仮定しましたがnode-mongodb-native、DB クエリは場合によって異なる場合があります。Redis もこれに適したソリューションです。

于 2012-11-02T10:29:42.993 に答える