1
我正在创建一个ASP.Net MVC 5网站。在我的网站上,有一个与StackOverflow使用的投票系统非常相似。我成功创建了用户提交投票的系统。然而,SO的一个很好的特点是它可以防止用户快速点击投票按钮(即投票太快)。目前,我的票类是这样的:检测快速用户活动
public class RestaurantReviewVote
{
[Key]
public int ID { get; set; }
public virtual NormalUser User { get; set; }
public virtual ItemReview Reivew { get; set; }
[Range(-1, 1)]
public int Value { get; set; }
public DateTime Created { get; set; }
}
我心目中是做这样的事情:
rapidActivity = db.Votes.Where(v => v.User.Id == userId && (DateTime.UtcNow - v.Created < THRESHOLD)).Any();
不过,我认为运行此,每次用户提交投票就太数据库压力很大。 (也许我错了)如何在考虑到性能的情况下做到这一点?
PS: 如果您认为有更好的方式来完成投票系统,请告诉我。我很感激任何帮助。谢谢。
YES !!答案就在我面前,我没有看到它。我想我正在寻找的是缓存最近的活动时间。通过这种方式,我可以将这些类型的操作组合到几个类别中,并仅使用我将要获得的用户类来缓存它们的时间。感谢您的建议和改进。 –