Asp.net mvc 如何在使用linq2sql存储库的Asp.net Mvc中实现缓存策略?
我不知道应该使用httpcontext缓存还是企业库缓存应用程序块。另外,删除或更新作为缓存列表一部分的实体时,缓存策略的最佳模式是什么 我应该从缓存中删除所有列表还是仅从缓存列表中删除该项?Asp.net mvc 如何在使用linq2sql存储库的Asp.net Mvc中实现缓存策略?,asp.net-mvc,linq-to-sql,caching,datacontext,Asp.net Mvc,Linq To Sql,Caching,Datacontext,我不知道应该使用httpcontext缓存还是企业库缓存应用程序块。另外,删除或更新作为缓存列表一部分的实体时,缓存策略的最佳模式是什么 我应该从缓存中删除所有列表还是仅从缓存列表中删除该项? 如果我更新它,我将从缓存中删除列表或更新其中的实体。有几种实现缓存的方法,httpcontext是最简单的方法,但不一定是最差的方法。请看一看或,它们都可以用作ASP.NET缓存的后端。尤其是memcached,它的工作非常出色 至于缓存策略:您必须决定什么最适合您。我个人会在更新/删除时从缓存中删除完整
如果我更新它,我将从缓存中删除列表或更新其中的实体。有几种实现缓存的方法,httpcontext是最简单的方法,但不一定是最差的方法。请看一看或,它们都可以用作ASP.NET缓存的后端。尤其是memcached,它的工作非常出色 至于缓存策略:您必须决定什么最适合您。我个人会在更新/删除时从缓存中删除完整的列表,而不是试图找出实体是否在列表中,因为这需要花费大量时间,您需要考虑并发问题(锁定列表,因为有人可能会更新/删除另一个实体)。 有时就地更新实体是有意义的(如果您有一个包含所有所需数据的完整对象),有时这是浪费时间,因为由于某些状态更改,实体应该移动到其他地方(例如,当您按LastChangedDate排序时等)
不要忘了优化你的DB代码,这样刷新刷新列表就不会花费太多时间。在完成了这两项测试后,我在代码上下文中对缓存应用程序块进行了全面的回顾,并在博客中介绍了我的使用经验。它使用非常简单,功能强大,足以满足我们的需要。我建议t、 在你的位置上,我会使用存储库模式来维护我的缓存,它对数据库数据集很有效,对你自己的缓存也应该同样有效。如果你不熟悉存储库模式,我会倾向于不同意前面的答案,但是,只取下你需要修改的项目,并删除缓存保持不变。如果您愿意,这将允许您独立于整个列表终止缓存中的项目。只需使用[OutputCache(Duration=10,VaryByParam=“none”)] 在要缓存的每个操作甚至控制器上 从