问候地球人。
我正在研究使用ASP.NET MVC缓存从各种数据库表中检索的数据的方法。我们有大量的数据,每天只更新一次,从那时起是静态的。这可能会有所不同,但通常会有用户列表(员工),部门,办公室,我们所在的位置等等。
我的问题是,您究竟如何首先检索数据?你在哪里存放? (文本文件,还是实际代码?)是什么决定了缓存是否需要更新?我更喜欢面向对象的方法,所以我可以将数据行视为对象。我已经在我的MVC应用程序中使用LINQ手动创建了一个模型。另外,我应该如何检查缓存是否脏?数据库应该做什么,还是应用程序应该做什么?例如,当一行更新时,数据库触发器应该去做并做一些事情以表明已经进行了更改(也许它可以写入文本文件?),或者我的应用程序应该快速检查以查看是否有任何更改?我意识到周围有很多方法,但有推荐的吗?
考虑到我对缓存没有经验,所以要温柔;)
答案 0 :(得分:0)
保存一个静态对象(Array,List,Hashmap等),包含每种数据类型的所有数据项(一个用于员工的数组,另一个用于部门等等),或者使用服务器Cache并存储这些数据项使用您自己定义的密钥在其中的数据容器。使用Cache非常简单且最常用。
使用Cache对象还允许您指定到期时间(绝对时间或按键上次触摸的时间)和缓存依赖项(您可以根据FS文件重置缓存项目)。
如有必要,可以创建更复杂的方案(例如,通过限制特定项目的缓存大小来到期)。
答案 1 :(得分:0)
与其他提到的一样,您应该使用Cache并使用表中的依赖项使Cache无效。
您应该问自己的一件事是如何查询数据。如果你需要sql的强大功能,那么缓存可能会妨碍你。如果您需要对数据进行过滤,分页和排序,您必须决定在何处执行此操作:从缓存中获取结果后,在sql或linq中。答案主要取决于运行结果集查询所需的时间。