c# - 如何缓存数据库表以防止在 Asp.net C# mvc 中进行许多数据库查询

标签 c# asp.net asp.net-mvc caching asp.net-mvc-4

我使用 Asp.net mvc 4 (c#) 构建自己的 cms,我想缓存一些数据库数据,例如:本地化、搜索类别(它是长尾的,每个类别都有自己的子类别和子子类别), 等..

一直查询数据库会有点矫枉过正,因为每个页面请求可能有超过 30-100 次查询,但是用户很少更新这些数据库

那么最好的方法(性能和便利性)是什么?

我知道如何使用 Action 的 OutputCache,但在这种情况下这不是我需要的,它缓存 html,但我需要的是例如我自己的助手 @html.Localization("Newsletter .Tite") 将获取语言的值,或与数据等交互的任何其他助手。

我认为(不太确定)我需要缓存我想要的数据,只有在第一次调用应用程序时,然后使用缓存位置,但我什至没有任何经验

最佳答案

您可以使用内置的 MemoryCache存储您从数据库中检索到的整个结果集。

一个典型的模式:

MyModel model = MemoryCache.Default["my_model_key"] as MyModel;
if (model == null)
{
    model = GetModelFromDatabase();
    MemoryCache.Default["my_model_key"] = model;
}

// you could use the model here

关于c# - 如何缓存数据库表以防止在 Asp.net C# mvc 中进行许多数据库查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17653124/

相关文章:

c# - System.Environment.NewLine 和\n

c# - 在 C# 中为 HMAC SHA1 生成公钥和 secret

c# - 代码隐藏中的 XPath/Grabbing 节点值

javascript - 将日期字符串从 C# Controller 传递到 Javascript 函数正在改变字符串

c# - 不同关系的 LINQ 选择和排序

c# - 与 .NET 上的 32 位平台相比,64 位平台上的大对象堆碎片是否是一个问题?

c# - 从 C# 调用 Advapi32.dll native EventWrite 函数?

c# - 如何仅使用 Razor 在 MVC 中的网格/列内添加链接操作

c# - asp :panel in asp.net mvc 的替代方案

c# - 使用 ADO.Net 的查询的连接超时异常