我想限制在我的 asp.net 网站上可以进行的搜索次数。此外,当超过最大数量时,必须有办法重置此计数。
有任何想法吗?
这个问题有 1001 种方法。一种方法是使用至少包含 2 个字段的数据库表来跟踪查询:日期和 ip(我会将实际查询添加为第三个字段,并可能添加用户的(登录)用户 ID做查询)。然后,您可以在执行搜索查询之前轻松获取每个 IP 甚至可能是用户(确保创建正确的索引!)的计数(每天/每周/每月/每年/whatnot),然后通知用户他们已经完成了配额。作为奖励,您可以获得搜索历史记录(按日期和 IP,甚至可能是用户),您可以使用它来进一步分析(搜索最多的关键字、最活跃的用户/IP 等)。
您还可以诉诸其他方法,例如将 IP 的 + 计数器保存在内存中(例如 a Dictionary<ip, int>
),甚至可能存储在 memcached 之类的东西中或仅存储在应用程序范围内等。这些方法不计其数,需要适合您的要求(您根本没有指定)。
重置计数可以像将计数器设置为 0(当然通过用户界面)一样简单,例如MyQueryDictionary[userip] = 0
,也可以像“提高数据库表中特定 IP 的阈值”以及介于两者之间的所有内容一样“复杂”。