在 ASP.NET MVC 3 中缓存数据

2024-02-24

我有一个 ASP.NET MVC 3 应用程序,它基本上只是一组 Web 服务。这些 Web 服务由一组控制器操作公开。每个控制器操作都会查询我的数据库。因为我的数据很少发生变化,而且陈旧的数据也不用担心,所以我想我应该实现一些缓存来提高性能。我的目标是:

  1. 切勿缓存对用户的响应。
  2. 缓存数据库记录长达 24 小时。如果已经过去24小时,则再次访问数据库。

那有意义吗?我知道如何防止缓存响应。我只是使用以下内容:

HttpContext.Response.Cache.SetCacheability(cacheability)

但是,我不确定如何将数据库记录缓存在内存中长达 24 小时。有人对如何做到这一点有任何建议吗?我什至不知道该去哪里寻找。

谢谢


您可以使用System.Runtime.Caching命名空间(或 ASP.NET 缓存,但这较旧,只能在 Web 应用程序中使用)。

这是一个示例函数,您可以使用它来包装当前的数据检索机制。您可以更改 MemoryCache.Add 中的参数来控制缓存的数量,但您在上面请求了 24h。

using System.Runtime.Caching;    // At top of file

public IEnumerable<MyDataObject> GetData() 
{
    IEnumerable<MyDataObject> data = MemoryCache.Default.Get(MYCACHEKEY) as IEnumerable<MyDataObject>;
    if (data == null)
    {
        data = // actually get your data from the database here
        MemoryCache.Default.Add(MYCACHEKEY, data, DateTimeOffset.Now.AddHours(24));
    }
    return data;
}

正如 @Bond 所提到的,如果您缓存的数据可能在 24 小时内发生变化,您可能还希望考虑使用 SQL 缓存依赖项。如果它非常静态,那么这将按照您的要求进行。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 ASP.NET MVC 3 中缓存数据 的相关文章

  • Dapper 强类型查询返回默认对象值

    刚刚开始使用 Dapper 并喜欢它 我遇到了问题 它返回正确数量的对象 但它们的属性都有默认值 using var dbConnection Connection await dbConnection OpenAsync const st
  • 如何使用 C# 打印 pdf

    我在 C 应用程序中使用 进程 打印 pdf 文件 但是我无法获取打印状态 我发现可以通过 System management 和 System printing 与打印机 队列进行交互 我做了很多尝试 但都出错了使用这两个命名空间但无法打
  • 以编程方式 Godaddy 发送的电子邮件不在“已发送邮件”文件夹中 C#.net

    我正在通过以下方式发送电子邮件ASP NET代码使用godaddy邮件服务器 邮件发送成功 但未存储在已发送邮件文件夹中 我正在使用下面的代码 SmtpClient client new SmtpClient client Host smt
  • ProtoBuf-net AsReference 需要 Activator.CreateInstance 中的公共构造函数吗?

    在我的两门课程中 看起来像这样 最少 using System using System Collections Generic using System Collections using System ComponentModel us
  • C++ 有像 Pascal 一样的“with”关键字吗?

    withPascal 中的关键字可用于快速访问记录的字段 有人知道 C 是否有类似的东西吗 前任 我有一个包含许多字段的指针 但我不想这样输入 if pointer gt field1 pointer gt field2 pointer g
  • 何时对向量进行归一化?

    我正在学习 XNA 并且在几乎所有的教育套件中都可以找到http creators xna com en US http creators xna com en US 我总是看到向量上对 Normalize 的调用 我知道归一化基本上将向量
  • 此插件导致 Outlook 启动缓慢

    我正在使用 C NET 4 5 开发 Outlook Addin 项目 但部署后 有时 Outlook 会禁用我的插件 并显示此消息 这个插件导致 Outlook 启动缓慢 我不知道我的插件出了什么问题 这只有很少的代码 并且ThisAdd
  • 可选参数“必须是编译时常量”

    我有一个类分为两个部分文件 如下所示 public partial class PersonRepository BaseRepository
  • 将语句插入 SQL Server 数据库

    最近几天我试图找到这个错误 但没有成功 我正在尝试在数据库中插入一个新行 一切都很顺利 没有错误 也没有程序崩溃 My INSERT声明如下 INSERT INTO Polozaj Znesek Uporabnik Cas Kupec Po
  • 将占位符文本添加到文本框

    我正在寻找一种将占位符文本添加到文本框的方法 就像在 html5 中使用文本框一样 IE 如果文本框没有文本 则会添加文本Enter some text here 当用户单击它时 占位符文本消失并允许用户输入自己的文本 如果文本框失去焦点并
  • Windows 程序如何临时更改其时区?

    我写了一个函数来返回time t与给定日期的午夜相对应的值 当给定日期没有午夜时 它返回最早可用的时间 例如 当埃及进入夏令时时 这种情况就可能发生 今年 时间更改于 4 月 29 日晚上午夜生效 因此时钟直接从 23 59 转到 01 0
  • 我们应该使用 Eval 还是 Databind 事件?

    当使用 Asp Net 并使用 ListView 等控件创建网站时 使用 Eval 命令是一个好习惯吗 还是应该在 databind 事件中填充文字和数据 取决于您是否想在更新事件上写回数据 在这种情况下数据绑定 如果您只想读取该数据 可以
  • 从 ef core 的子集合中删除一些项目

    我有一个父表和子表 其中父表与子表具有一对多关系 我想删除一些子项 并且希望父项的子集合反映该更改 如果我使用删除选定的子项RemoveRange 那么子集合不会更新 如果我使用Remove从子集合中删除子集合然后 显然 它不如使用效率高R
  • 基于 C++ 范围的 for 循环

    尝试使用基于范围的 for 循环执行某些操作 可以使用常规的 for 循环来完成 如下所示 vector
  • 使用 cudamalloc()。为什么是双指针?

    我目前正在浏览有关的教程示例http code google com p stanford cs193g sp2010 http code google com p stanford cs193g sp2010 学习CUDA 演示的代码 g
  • 函数模板重载解析期间的 MSVC 与 Clang/GCC 错误,其中一个函数模板包含参数包

    当我使用参数包时 我注意到这样一种情况 如下所示 在 gcc 和 clang 中编译得很好 但在 msvc 中却不行 template
  • printf 参数不足

    我的问题是关于缺少参数的 printf 之后的行为 printf s blah blah d int integer was given as argument and not int written 我已经知道 如果格式参数不足 则行为是
  • Intel 和 AMD 处理器有相同的汇编程序吗?

    C语言被用来编写Unix以实现可移植性 使用不同编译器编译的同一个C语言程序会产生不同的机器指令 为什么 Windows 操作系统能够在两者上运行Intel https en wikipedia org wiki Intel and AMD
  • 计算两个日期之间的工作日数?

    在C 中 如何计算business 或工作日 两个日期之间的天数 我以前曾经遇到过这样的任务 并且我已经找到了解决方案 当可以避免的时候 我会避免列举其间的所有日子 这里就是这种情况 正如我在上面的一个答案中看到的那样 我什至没有提到创建一
  • 请解释为什么Java和C对此代码给出不同的答案

    public class Test public static void main String args int i 10 i i System out println value of i is i 输出是 10 当我在中执行类似的代码

随机推荐

  • nginx keepalive 和 dns 解析器

    我在 AWS 中有一个 nginx 实例 它具有上游应用程序层 对nginx有两个要求 活着 使用解析器动态解析上游 我能够使它们中的任何一个工作 这是使 keepalive 工作的配置 upstream backend server ap
  • localStorage 无法在 google chrome 上运行

    我正在使用浏览器localStorage存储一个值 但是在使用谷歌浏览器时 当我们使用以下命令刷新页面时window location reload localStorage value被冲了 例如 localStorage value1
  • MongoDB 副本集成员状态为“OTHER”

    三个成员 主要和次要 第三个成员是 其他 我找不到有关该状态的任何信息 不知道该怎么做 我已经重新启动了实例 但它总是出现相同的情况 找不到有关该状态的文档 我是复制集的新手 任何帮助将不胜感激 配置设置不正确 您可以使用以下命令来初始化
  • 在 Python 中压缩并使用解压缩 C# 解压缩的最简单方法(反之亦然)

    我有一个带有基于 Mono 的 C 客户端和 Python 服务器的程序 它们通过 TCP IP 套接字进行通信 这些消息主要使用二进制格式 但每条消息的最大部分通常是嵌入的 UTF 8 字符串 英文 每条消息通常都很短 小于 100 字节
  • 将数据框(或其他 R 对象)连接到只读 Postgresql 数据库中的表?

    我对 Postgres 数据库具有只读访问权限 我无法写入数据库 问 有没有办法构建和运行 SQL 查询 将数据框 或其他 R 对象 连接到只读 Postgres 数据库中的表 这是为了从 WRDS 访问数据 https wrds www
  • UIGestureRecognizer oneFingerForcePress:在 iOS 11 上崩溃

    我们刚刚收到有关 iPhone 设备 iOS 11 的一些奇怪的崩溃反馈 这里有一个信息 UIKit UIKeyBoardBasedNonEditableTextSelectionGestureCluster oneFingerForceP
  • 在Angular2中动态加载HTML模板

    我使用创建了一个项目angular cli其中包含应用组件如下 import Component from angular core Component selector app root templateUrl app component
  • MSVC10 Visual Studio 2010 是否支持基于 C++ 范围的循环

    MSVC10 是否支持 C 0x 草案标准的基于范围的循环 http en wikipedia org wiki C 2B 2B0x Range based for loop http en wikipedia org wiki C 2B
  • Jenkins Email-ext 预发送脚本

    我想在 Email ext Jenkins 插件的预发送脚本中编辑电子邮件正文 我应该使用什么语言来编写代码 Bash 脚本还是其他 您可以添加一些代码吗 谢谢 您必须使用的语言是 Groovy 您可以在 Jenkins gt 管理 gt
  • 使用 typeScript 滚动到 webView 上的 x,y 坐标

    我正在我的应用程序中制作自定义地图 这本质上是一个大地图图像 我根据 GPS 位置在大地图图像上移动一个小头像图像 我允许用户滚动地图以查看屏幕外的地方 我现在想添加一个按钮 使用户回到他们的位置中心 但它不起作用 我尝试使用 window
  • 如何获取带有分隔符的字符串的前五个字符

    由此形成一整串 1 2 3 4 5 2 2 2 2 2 3 3 3 3 3 4 4 4 4 4 5 5 5 5 5 我怎样才能实现像这样放入数组 我想将它们按行放入数组中 正如您所提到的 您可以将结果作为字符串 并具有预期结果row str
  • 无法在 Databricks 上运行 Pandas 分析

    我正在尝试在 Databricks 环境中的示例数据帧上运行 Pandas 分析 收到与 marplotlib 相关的错误 不确定此问题是否与 Matplotlib 或 pandas profiling 相关 任何帮助将不胜感激 Datab
  • 初始化 MIDIMetaEvent 结构

    我正在努力使用 swift 初始化 MusicPlayer h 中找到的 MIDIMetaEvent 结构 头文件定义结构如下 struct MIDIMetaEvent var metaEventType UInt8 var unused1
  • 将 Gollum wiki 部署到 Heroku

    Gollum 是 一个简单的 由 Git 驱动的 wiki 具有出色的 API 和本地前端 它托管在 GitHub 上 http github com github gollum http github com github gollum
  • 移动浏览器中 Div 绝对定位的问题

    我在以下网站上绝对定位名为 id verticalGenesis 的 div 时遇到很多问题 http genesispetaluma com index html http genesispetaluma com index html在移
  • 清理项目、重建项目、在 Android Studio 中运行项目

    有谁知道或知道 android studio 中这三个功能如何工作的详细答案 我认为 Eclipse 可能还有 IntelliJ 也具有相同或相似的功能 我已经看到并被告知答案 这些答案给出了它们如何工作的简要概述 据我了解 重建还将清理项
  • Printf 函数格式化程序

    有以下简单的C 代码 include
  • 在 MVC 中,您在哪里放置对模型类的引用?

    在询问了不同的人并且没有人提供我所说的 至少有点具体的答案 之后 我一直想知道 问题 在 iPhone 应用程序中 应用程序应该保留对其模型类的引用 使用MVC http developer apple com iphone library
  • 如何根据 Haskell 中的区域设置格式化数字?

    在Python中我可以使用locale format根据区域设置漂亮地打印数字 gt gt gt import locale gt gt gt locale setlocale locale LC ALL en US UTF 8 en US
  • 在 ASP.NET MVC 3 中缓存数据

    我有一个 ASP NET MVC 3 应用程序 它基本上只是一组 Web 服务 这些 Web 服务由一组控制器操作公开 每个控制器操作都会查询我的数据库 因为我的数据很少发生变化 而且陈旧的数据也不用担心 所以我想我应该实现一些缓存来提高性