2

記事のビューカウンターを作成します。いくつか質問があります:

  1. 記事を開いたときに記事の著者を無視する必要がありますか?

  2. 毎回データベースを更新したくありません。Dictionary<int, int>各記事が表示された回数を(articleId、viewCount)に保存でき ます。100ヒット後、データベースを更新できます。

  3. ユーザーと記事ごとに1時間に1回だけヒットをカウントする必要があります。(ユーザーが1時間の間に1つの記事を何度も開く場合、ビューカウントは1回だけインクリメントする必要があります)。

それぞれの質問について、私はあなたの提案を正しく行う方法を知りたいです。

#3のやり方に特に興味があります。ユーザーが記事を開いた時刻をCookieに保存する必要がありますか?ページごとに新しいCookieを作成する必要があるということですか?

4

3 に答える 3

3

私は答えを知っていると思います.Opeが提案したように、彼らはIISログを分析しています.

隠し画像のsrcが設定されています

http://stackoverflow.com/posts/3590653/ivc/[Random code]

[ランダム コード] は、多くの人が同じ IP を (ネットワーク内などで) 共有する可能性があり、コードはユーザーを区別するために使用されるため、必要です。

于 2010-08-28T19:50:23.720 に答える
2
  1. 確かに - それは良い考えだと思います

  2. と 3. は関連しています: 問題は、この辞書とロジックを実際にどこに保存するかです。

もちろん、ASP.NET アプリケーションまたはセッション スコープが最も簡単な選択ですが、アプリケーション プールのロジックを理解する必要があります。ASP.NET アプリケーションは時々リサイクルされます。特定の期間、または特別な状況でサイトにアクションがない場合 - たとえば、プロセスが大量のメモリを消費し始めた場合、アプリケーションはシャットダウンされ、新しいアプリケーションが開始されます。次のリクエスト。セッションとアプリケーションのシャットダウンのためのイベントがありますが、少なくとも数年前までは、信頼できるものではありませんでした。多くの特殊なケースでは、常に起動するとは限りませんでした。今は改善されているかもしれませんが、テストするのは大変です。そして、1 時間は本当に長い時間です。通常、セッションは最後のリクエストから 20 分程度しか維持されません。

信頼できる方法は、別の Windows サービスを用意するか (プログラミングに多くの作業が必要)、常にダブルビュー分析を使用してデータベースに保存することです (このような小さな機能にはかなりのオーバーヘッドがかかります)。

IIS ログにアクセスできますか? ある種のタイマー プロセスを使用して、たとえば 30 分ごとに IIS ログを分析し、そこからカウントを取得するのはどうですか? または、すべてのヒットをユーザー情報とともにデータベースに保存し、同様のタイミングのプロセスで一意のヒットを計算します。

最後に 1 つの質問: インターネットの何千ものカウンター アプリケーション/サービスのどれも、あなたの要件に十分に近い仕事をしないと本当に確信していますか?

幸運を!

于 2010-08-28T12:44:02.223 に答える
1

これは Firebug のこのページのスクリーンショットです。204 ステータス コード (No Content) を返すリクエストがあることがわかります。

これは、stackoverflow のビュー カウンターです。コントローラーのアクションを指す隠し画像を使用しています。

多くの記事を持っています。ユーザーが既にアクセスした記事を追跡する方法は?

PS ところで、このリクエストが 2 回行われるのはなぜですか?

代替テキスト

于 2010-08-28T13:37:20.883 に答える