我和一个朋友正在用ASP.NET MVC 4和EntityFramework 6开发一个web应用程序。我们实现了存储库模式,当然,每次用户请求访问数据库中的数据时,都会初始化和删除实体框架上下文,因此不会利用缓存系统实体框架第一级。
我想在实体框架中实现第二级缓存,但是他告诉我们没有必要,我们可以使用ASP.NET缓存。我的问题是,
何时使用每种类型的缓存?
彼此有多快?
发布于 2014-02-12 17:40:07
何时使用每种类型的缓存?
除了编写您自己的EF提供程序之外,还有其他性能改进模式,为了实现二级缓存,您必须这样做。我的建议(仅此而已,建议)是永远不要实现EF二级缓存。
获得正确的缓存是非常困难的,特别是缓存失效。
如果您的最终目标是快速交付网页,asp.net缓存(或OutputCache)就是实现这一目标的方法之一。但是,您必须选择何时使缓存失效,这同样很困难。
彼此有多快?
缓存通常将数据存储在RAM中,因为这是获取物理数据的最快方法。然而,最终速度将取决于。您使用的是哪个缓存提供程序?您的部署负载平衡吗?如果是,它们是否共享相同的缓存?他们怎么进入它的?当您处理web时,您必须考虑到数据将通过网络进行处理,因此所有这些延迟问题也会起到一定的作用(负载/大小、跳数等)。
如果性能确实是个问题,您可能需要研究使用redis或其他nosql提供程序之类的工具来存储预先计算过的非规范化数据集的模式,以实现更快的访问。您还可以在EF之外创建数据访问点的定制sql,这些数据访问点会给您带来特殊的性能问题。
我真的不认为你会得到任何其他的答案,没有说“这取决于”的方式或其他方式。
https://stackoverflow.com/questions/21734390
复制相似问题