ASP.NET MVC 中的数据缓存存储
Posted
技术标签:
【中文标题】ASP.NET MVC 中的数据缓存存储【英文标题】:Data Caching Stores In ASP.NET MVC 【发布时间】:2009-08-28 11:11:38 【问题描述】:问候地球人。
我正在研究使用 ASP.NET MVC 缓存从各种数据库表中检索到的数据的方法。我们有大量的数据,每天只更新一次,从那时起就是静态的。这可能会有所不同,但通常是用户(员工)列表、部门、办公室、我们所在的位置等。
我的问题是,您究竟是如何检索数据的?你把它存放在哪里? (文本文件,还是实际代码?)是什么决定了缓存是否需要更新?我更喜欢面向对象的方法,这样我就可以将数据行视为对象。我已经在我的 MVC 应用程序中使用 LINQ 手动创建了一个模型。另外,我应该如何检查缓存是否脏?数据库应该做些什么,还是应用程序应该做些什么?例如,当更新行时,数据库触发器是否应该执行某些操作以指示已进行更改(也许它可以写入文本文件?),或者我的应用程序是否应该快速检查是否有任何更改?我知道周围有很多方法,但是有推荐的吗?
考虑到我对缓存的经验为零,所以要温柔;)
【问题讨论】:
***.com/questions/385986/caching-in-asp-net-mvc 正如你所说你什么都不知道,首先要看的是OutputCacheAttribute-msdn.microsoft.com/en-us/library/…。显然,这不能满足您的所有需求,但可能会满足其中一些需求。 【参考方案1】:要么持有一个静态对象(Array、List、Hashmap 等),其中包含每种数据类型的所有数据项(一个数组用于员工,另一个用于部门等),或者使用服务器缓存并存储这些使用您自己定义的密钥在其中的数据容器。使用缓存非常简单,也是最常用的。
使用 Cache 对象还允许您指定过期(绝对或按最后一次触摸键的时间)和缓存依赖关系(您可以在其中基于 FS 文件重置缓存项)。
如有必要,可以创建更复杂的场景(例如,通过限制特定项目的缓存大小来过期)。
【讨论】:
【参考方案2】:像其他人提到的那样,您可能应该使用缓存并使缓存失效并依赖于表。
您应该问自己的一件事是您需要如何查询数据。如果您需要 sql 的强大功能,那么缓存可能会妨碍您。如果您需要对数据进行过滤、分页和排序,您必须决定在哪里执行:在 sql 中或在从缓存中获取结果后通过 linq。答案主要取决于您为结果集运行查询所需的时间。
【讨论】:
以上是关于ASP.NET MVC 中的数据缓存存储的主要内容,如果未能解决你的问题,请参考以下文章
防止在 ASP.NET MVC 中缓存 WEB API 数据
如何缓存数据库表以防止在 Asp.net C# mvc 中出现许多数据库查询