asp.net Web サイトで実行できる検索の数を制限したいと考えています。また、最大数を超えた場合、このカウントをリセットする方法が必要です。
何か案は?
この問題には 1001 通りのアプローチがあります。1つは、少なくとも2つのフィールドを持つデータベーステーブルを使用してクエリを追跡することです:日付とIP(そして、実際のクエリを3番目のフィールドとして追加し、おそらくユーザーの(ログインした)ユーザーIDを追加しますクエリを実行します)。その後、検索クエリを実行する前に、IP ごとに (日/週/月/年/その他) カウントを簡単に取得できます (正しいインデックスを作成するようにしてください!)。クォータ。おまけとして、さらに分析するために使用できる検索の履歴 (日付と IP、場合によってはユーザー別) を取得します (最も検索されたキーワード、最もアクティブなユーザー/IP など)。
また、IP の + カウンターをメモリに保持する (a のようにDictionary<ip, int>
)、memcached のようなものに格納する、または単にアプリケーション スコープに格納するなど、他の方法に頼ることもできます。まったく指定していません)。
カウントのリセットは、(もちろんユーザー インターフェイスを介して) カウンターを 0 に設定するのと同じくらい簡単な場合もあれば、MyQueryDictionary[userip] = 0
「データベース テーブル内の特定の IP のしきい値を上げる」などの「複雑な」場合もあります。