当前位置: 首页 > news >正文

利用System.Web.HttpRuntime.Cache制作缓存工具类

用到的依赖介绍

当谈到 ASP.NET 中的缓存管理时,常涉及到以下三个类:CacheDependency、HttpRuntime.Cache 和 System.Web.Caching。

  1. CacheDependency(缓存依赖项):

    • CacheDependency 类用于指定一个或多个文件或目录作为缓存项的依赖项。
    • 当关联的文件或目录内容发生变化时,与之相关联的缓存项将自动失效并更新。
    • 这样可以确保缓存数据的及时性和一致性,避免缓存数据过期而导致错误的情况发生。
    • 在 ASP.NET 中,CacheDependency 是实现更智能的缓存管理策略的关键类之一。
  2. HttpRuntime.Cache:

    • HttpRuntime.Cache 是 ASP.NET 中用于管理应用程序级缓存的静态类。
    • 它提供了对应用程序级缓存的访问和操作方法,如插入缓存项、获取缓存项、移除缓存项等。
    • 可以使用 HttpRuntime.Cache 存储和管理应用程序中的数据,提高数据访问的性能和效率。
  3. System.Web.Caching 命名空间:

    • System.Web.Caching 命名空间包含了在 ASP.NET 中用于缓存管理的相关类和接口。
    • 该命名空间定义了与缓存相关的类,如 Cache 类用于操作缓存项,CacheDependency 类用于设置缓存依赖项等。
    • 通过 System.Web.Caching 命名空间提供的类和接口,开发人员可以实现对缓存的灵活管理和控制,提高应用程序的性能和可靠性。

综上所述,CacheDependency 类用于设置缓存项的依赖项,HttpRuntime.Cache 是 ASP.NET 中用于管理应用程序级缓存的类,而 System.Web.Caching 命名空间提供了一系列与缓存管理相关的类和接口,帮助开发人员实现对缓存的有效管理。这些类和命名空间在 ASP.NET 中扮演着重要的角色,用于提高应用程序的性能和响应速度。

CacheDependency 是 ASP.NET 中用于设置缓存依赖项的类,主要用于 ASP.NET Web 应用程序中管理缓存。在 ASP.NET Web 应用程序中,可以使用 CacheDependency 来关联文件或目录,实现缓存项与这些文件或目录的关联,从而在文件内容发生变化时自动失效并更新缓存项。

虽然 CacheDependency 主要用于 ASP.NET Web 应用程序中,但 .NET Framework 中也提供了其他类型的缓存管理机制,如 System.Runtime.Caching 命名空间中的 MemoryCache 类和 ObjectCache 类。这些类提供了更通用的缓存功能,可以在各种类型的应用程序中使用,包括控制台应用程序、Windows 服务等。

因此,虽然 CacheDependency 是一个 ASP.NET 特定的类,但在其他类型的应用程序中也可以使用其他缓存管理类来实现类似的功能。例如,可以使用 MemoryCache 类来管理缓存,并通过监视文件变化等方式手动实现缓存项的失效和更新逻辑。

这个缓存只有web能用吗

本次文章介绍的只能使用与web,CacheDependency、HttpRuntime.Cache 和 System.Web.Caching 这些类主要是针对 ASP.NET Web 应用程序的缓存管理而设计的,但并不仅限于 Web 应用程序,也可以在其他类型的应用程序中使用,只要项目引用了适当的命名空间和程序集。

例如,如果你正在开发一个 Windows 服务、控制台应用程序或 WPF 应用程序,并且希望实现缓存管理以提高性能,你仍然可以使用类似的缓存机制。在这些情况下,你可能需要手动实现一些缓存管理逻辑,而不是直接使用 HttpRuntime.Cache 等类。

对于非 Web 应用程序,你可以考虑使用 System.Runtime.Caching 命名空间中的 MemoryCache 类(.NET Framework 4.0 及更高版本)来实现缓存管理。MemoryCache 提供了一个通用的缓存机制,可以在各种类型的应用程序中使用,并且具有类似于 ASP.NET 缓存管理的功能。通过 MemoryCache,你可以插入、获取和移除缓存项,并设置缓存项的属性,实现灵活的缓存策略。

因此,尽管这些缓存类最初是为 ASP.NET Web 应用程序设计的,但在其他类型的应用程序中也可以通过适当的方式实现类似的缓存管理功能,以提高应用程序的性能和效率。

工具类代码

环境:.net framework 4.5

using System;
using System.Configuration;
using System.Web;
using System.Web.Caching;namespace Wing.Framework.Utility
{/// <summary>/// 本地缓存帮助类/// </summary>public class Caching{/// <summary>/// 本地缓存获取/// </summary>/// <param name="name">key</param>/// <returns></returns>public static object Get(string name){return HttpRuntime.Cache.Get(name);}/// <summary>/// 本地缓存移除/// </summary>/// <param name="name">key</param>public static void Remove(string name){if (HttpRuntime.Cache[name] != null)HttpRuntime.Cache.Remove(name);}/// <summary>/// 本地缓存写入(默认缓存20min)/// </summary>/// <param name="name">key</param>/// <param name="value">value</param>public static void Set(string name, object value){Set(name, value, null);}/// <summary>/// 本地缓存写入(默认缓存20min),依赖项/// </summary>/// <param name="name">key</param>/// <param name="value">value</param>/// <param name="cacheDependency">依赖项</param>public static void Set(string name, object value, CacheDependency cacheDependency){HttpRuntime.Cache.Insert(name, value, cacheDependency, Cache.NoAbsoluteExpiration, TimeSpan.FromMinutes(20));}/// <summary>/// 本地缓存写入/// </summary>/// <param name="name">key</param>/// <param name="value">value</param>/// <param name="minutes">缓存分钟</param>public static void Set(string name, object value, int minutes){HttpRuntime.Cache.Insert(name, value, null, Cache.NoAbsoluteExpiration, TimeSpan.FromMinutes(minutes));}/// <summary>/// 本地缓存写入,包括分钟,是否绝对过期及缓存过期的回调/// </summary>/// <param name="name">key</param>/// <param name="value">value</param>/// <param name="minutes"缓存分钟></param>/// <param name="isAbsoluteExpiration">是否绝对过期</param>/// <param name="onRemoveCallback">缓存过期回调</param>public static void Set(string name, object value, int minutes, bool isAbsoluteExpiration, CacheItemRemovedCallback onRemoveCallback){if (isAbsoluteExpiration)HttpRuntime.Cache.Insert(name, value, null, DateTime.Now.AddMinutes(minutes), Cache.NoSlidingExpiration, CacheItemPriority.Normal, onRemoveCallback);elseHttpRuntime.Cache.Insert(name, value, null, Cache.NoAbsoluteExpiration, TimeSpan.FromMinutes(minutes), CacheItemPriority.Normal, onRemoveCallback);}}
}

InsCode AI创作助手的回答

提问:

ASP.NET 中如何实现缓存?

回答:

在ASP.NET中,可以通过使用HttpContext.Current.Cache对象来实现缓存。该对象是一个全局的缓存容器,可以在整个应用程序的生命周期内使用。

下面是在ASP.NET中实现缓存的一些常见方法:

  1. 添加缓存项: HttpContext.Current.Cache.Insert(key, value, dependencies, absoluteExpiration, slidingExpiration, priority, onRemoveCallback);

    key: 缓存项的唯一标识符; value: 缓存项的值; dependencies: 缓存项的依赖项,可以是文件、数据库表等; absoluteExpiration: 缓存项的绝对过期时间; slidingExpiration: 缓存项的滑动过期时间; priority: 缓存项的优先级; onRemoveCallback: 缓存项被移除时的回调方法。

  2. 获取缓存项: var value = HttpContext.Current.Cache[key];

    通过键名获取缓存项的值。

  3. 移除缓存项: HttpContext.Current.Cache.Remove(key);

    通过键名移除缓存项。

  4. 清空缓存: HttpContext.Current.Cache.Clear();

    清空所有缓存项。

此外,还可以在ASP.NET中使用OutputCache特性来实现页面级别的缓存。例如:

[OutputCache(Duration = 3600, VaryByParam = "none")] public ActionResult Index() { // 缓存该页面的输出结果,有效期为3600秒 return View(); }

以上是ASP.NET中实现缓存的一些常见方法和技巧,可以根据具体的应用场景选择合适的缓存策略。

相关文章:

利用System.Web.HttpRuntime.Cache制作缓存工具类

用到的依赖介绍 当谈到 ASP.NET 中的缓存管理时&#xff0c;常涉及到以下三个类&#xff1a;CacheDependency、HttpRuntime.Cache 和 System.Web.Caching。 CacheDependency&#xff08;缓存依赖项&#xff09;&#xff1a; CacheDependency 类用于指定一个或多个文件或目录作…...

266.【华为OD机试真题】抢7游戏(深度优先搜索DFS-JavaPythonC++JS实现)

🚀点击这里可直接跳转到本专栏,可查阅顶置最新的华为OD机试宝典~ 本专栏所有题目均包含优质解题思路,高质量解题代码(Java&Python&C++&JS分别实现),详细代码讲解,助你深入学习,深度掌握! 文章目录 一. 题目-抢7游戏二.解题思路三.题解代码Python题解代码…...

工具分享:在线键盘测试工具

在数字化时代&#xff0c;键盘作为我们与计算机交互的重要媒介之一&#xff0c;其性能和稳定性直接影响到我们的工作效率和使用体验。为了确保键盘的每个按键都能正常工作&#xff0c;并帮助用户检测潜在的延迟、连点等问题&#xff0c;一款优质的在线键盘测试工具显得尤为重要…...

Arcmap excel转shp

使用excel表格转shp的时候&#xff0c;如果你的excel里面有很多字段&#xff0c;直接转很大概率会出现转换结果错误的情况&#xff0c;那么就需要精简一下字段的个数。将原来的表格文件另存一份&#xff0c;在另存为的文件中只保留关键的经度、纬度、和用于匹配的字段即可&…...

14. rk3588自带的RKNNLite检测yolo模型(python)

首先将文件夹~/rknpu2/runtime/RK3588/Linux/librknn_api/aarch64/下的文件librknnrt.so复制到文件夹/usr/lib/下&#xff08;该文件夹下原有的文件librknnrt.so是用来测试resnet50模型的&#xff0c;所以要替换成yolo模型的librknnrt.so&#xff09;&#xff0c;如下图所示&am…...

心理辅导|高校心理教育辅导系统|基于Springboot的高校心理教育辅导系统设计与实现(源码+数据库+文档)

高校心理教育辅导系统目录 目录 基于Springboot的高校心理教育辅导系统设计与实现 一、前言 二、系统功能设计 三、系统实现 1、学生功能模块的实现 &#xff08;1&#xff09;学生登录界面 &#xff08;2&#xff09;留言反馈界面 &#xff08;3&#xff09;试卷列表界…...

字符串方法挑战

题目 编写一个程序&#xff0c;接收一个使用下划线命名法&#xff08;underscore_case&#xff09;编写的变量名列表&#xff0c;并将它们转换为驼峰命名法&#xff08;camelCase&#xff09;。 输入将来自插入到DOM中的文本区域&#xff08;请参见下面的代码&#xff09;&…...

vivado FIR Filters

Vivado合成直接从RTL中推导出乘加级联来组成FIR滤波器。这种滤波器有几种可能的实现方式&#xff1b;一个例子是收缩滤波器在7系列DSP48E1 Slice用户指南&#xff08;UG479&#xff09;中进行了描述&#xff0c;并在8抽头偶数中显示对称收缩FIR&#xff08;Verilog&#xff09;…...

c# Contains方法-检查集合中是否包含指定的元素

Contains 是 .NET 集合框架中许多集合类&#xff08;如 List、Array、HashSet 等&#xff09;提供的一种方法&#xff0c;用于检查集合中是否包含指定的元素。对于 List<int> 类型&#xff0c;Contains 方法会遍历列表中的所有元素&#xff0c;并判断传入的方法参数是否存…...

【开源】在线办公系统 JAVA+Vue.js+SpringBoot+MySQL

目录 1 功能模块1.1 员工管理模块1.2 邮件管理模块1.3 人事档案模块1.4 公告管理模块 2 系统展示3 核心代码3.1 查询用户3.2 导入用户3.3 新增公告 4 免责声明 本文项目编号&#xff1a; T 001 。 \color{red}{本文项目编号&#xff1a;T001。} 本文项目编号&#xff1a;T001。…...

dubbo源码中设计模式——注册中心中工厂模式的应用

工厂模式的介绍 工厂模式提供了一种创建对象的方式&#xff0c;而无需指定要创建的具体类。 工厂模式属于创建型模式&#xff0c;它在创建对象时提供了一种封装机制&#xff0c;将实际创建对象的代码与使用代码分离。 应用场景&#xff1a;定义一个创建对象的接口&#xff0…...

T-Dongle-S3开发笔记——移植LVGL

添加lvgl组件 idf.py add-dependency lvgl/lvgl>8.* 新建终端执行命令后出现了新的文件&#xff1a; 清除再编译后才会出现lvgl库 优化为本地组件 以上方式修改了组件文件内容重新编译后文件又会变回去。 所以我们要把lvgl变成本地组件 1、要把 idf_component.yml 文…...

SOPHON算能科技新版SDK环境配置以及C++ demo使用过程

目录 1 SDK大包下载 2 获取SDK中的库文件和头文件 2.1 注意事项 2.2 交叉编译环境搭建 2.2.1 首先安装工具链 2.2.2 解压sophon-img包里的libsophon_soc__aarch64.tar.gz&#xff0c;将lib和include的所有内容拷贝到soc-sdk文件夹 2.2.3 解压sophon-mw包里的sophon-mw-s…...

Linux-SSH被攻击-解决方案

文章目录 一、检查攻击来源二、防范措施三、Fail2banfirewallcmd-ipset安装Fail2ban&#xff1a;安装firewalld&#xff1a;配置Fail2ban&#xff1a;配置firewalld以使用fail2ban&#xff1a;测试配置&#xff1a; SSH端口暴露在公网上很可能被黑客扫描&#xff0c;并尝试登入…...

第1章 计算机系统概述(2)

1.4操作系统结构 随着操作系统功能的不断增多和代码规模的不断变大,合理的操作系统结构,对于降低操作系统复杂度,提升操作系统安全与可靠性来说变得尤为重要。 分层法: 优点: 1.便于系统调试和验证,简化系统的设计和实现 2.易于扩充和维护 缺点: 1.合理定义各层较难(依赖关系比…...

【Java中23种设计模式-单例模式--饿汉式】

加油&#xff0c;新时代打工人&#xff01; 简单粗暴&#xff0c;直接上代码。 23种设计模式定义介绍 Java中23种设计模式-单例模式 Java中23种设计模式-单例模式2–懒汉式线程不安全 Java中23种设计模式-单例模式2–懒汉式2线程安全 package mode;/*** author wenhao* dat…...

基于JavaWeb实现的在线蛋糕商城

一、系统架构 前端&#xff1a;jsp | bootstrap | js | css 后端&#xff1a;servlet | mybatis 环境&#xff1a;jdk1.7 | mysql | maven | tomcat 二、代码及数据库 三、功能介绍 01. web页-首页 02. web页-商品分类 03. web页-热销 04. web页-新品 05. w…...

【Pytorch】各种维度变换函数总结

维度变换千万不要混着用&#xff0c;尤其是交换维度的transpose和更改观察视角的view或者reshape&#xff01;混用了以后虽然不会报错&#xff0c;但是数据是乱的, 建议用einops中的rearrange&#xff0c;符合人的直观&#xff0c;不容易出错。 一个例子&#xff1a; >>…...

typescript 泛型详解

typescript 泛型 泛型是可以在保证类型安全前提下&#xff0c;让函数等与多种类型一起工作&#xff0c;从而实现复用&#xff0c;常用于: 函数、接口、class中。 需求:创建一个id 函数&#xff0c;传入什么数据就返回该数据本身(也就是说&#xff0c;参数和返回值类型相同)。 …...

【Ubuntu内核】解决Ubuntu 20.04更新内核后无法联网的问题

最近在使用Ubuntu 20.04时&#xff0c;在更新内核后无法进行WiFi联网。我的电脑上装载的是AX211型号的无线网卡&#xff0c;之前安装了相应的驱动&#xff0c;并且一直正常使用。但不小心更新到了Linux 5.15.0-94-generic后&#xff0c;突然发现无法连接网络了。 于是首先怀疑…...

React Native 开发环境搭建(全平台详解)

React Native 开发环境搭建&#xff08;全平台详解&#xff09; 在开始使用 React Native 开发移动应用之前&#xff0c;正确设置开发环境是至关重要的一步。本文将为你提供一份全面的指南&#xff0c;涵盖 macOS 和 Windows 平台的配置步骤&#xff0c;如何在 Android 和 iOS…...

使用分级同态加密防御梯度泄漏

抽象 联邦学习 &#xff08;FL&#xff09; 支持跨分布式客户端进行协作模型训练&#xff0c;而无需共享原始数据&#xff0c;这使其成为在互联和自动驾驶汽车 &#xff08;CAV&#xff09; 等领域保护隐私的机器学习的一种很有前途的方法。然而&#xff0c;最近的研究表明&…...

linux 错误码总结

1,错误码的概念与作用 在Linux系统中,错误码是系统调用或库函数在执行失败时返回的特定数值,用于指示具体的错误类型。这些错误码通过全局变量errno来存储和传递,errno由操作系统维护,保存最近一次发生的错误信息。值得注意的是,errno的值在每次系统调用或函数调用失败时…...

Qt Http Server模块功能及架构

Qt Http Server 是 Qt 6.0 中引入的一个新模块&#xff0c;它提供了一个轻量级的 HTTP 服务器实现&#xff0c;主要用于构建基于 HTTP 的应用程序和服务。 功能介绍&#xff1a; 主要功能 HTTP服务器功能&#xff1a; 支持 HTTP/1.1 协议 简单的请求/响应处理模型 支持 GET…...

C++ Visual Studio 2017厂商给的源码没有.sln文件 易兆微芯片下载工具加开机动画下载。

1.先用Visual Studio 2017打开Yichip YC31xx loader.vcxproj&#xff0c;再用Visual Studio 2022打开。再保侟就有.sln文件了。 易兆微芯片下载工具加开机动画下载 ExtraDownloadFile1Info.\logo.bin|0|0|10D2000|0 MFC应用兼容CMD 在BOOL CYichipYC31xxloaderDlg::OnIni…...

Linux离线(zip方式)安装docker

目录 基础信息操作系统信息docker信息 安装实例安装步骤示例 遇到的问题问题1&#xff1a;修改默认工作路径启动失败问题2 找不到对应组 基础信息 操作系统信息 OS版本&#xff1a;CentOS 7 64位 内核版本&#xff1a;3.10.0 相关命令&#xff1a; uname -rcat /etc/os-rele…...

Go 语言并发编程基础:无缓冲与有缓冲通道

在上一章节中&#xff0c;我们了解了 Channel 的基本用法。本章将重点分析 Go 中通道的两种类型 —— 无缓冲通道与有缓冲通道&#xff0c;它们在并发编程中各具特点和应用场景。 一、通道的基本分类 类型定义形式特点无缓冲通道make(chan T)发送和接收都必须准备好&#xff0…...

C++:多态机制详解

目录 一. 多态的概念 1.静态多态&#xff08;编译时多态&#xff09; 二.动态多态的定义及实现 1.多态的构成条件 2.虚函数 3.虚函数的重写/覆盖 4.虚函数重写的一些其他问题 1&#xff09;.协变 2&#xff09;.析构函数的重写 5.override 和 final关键字 1&#…...

解读《网络安全法》最新修订,把握网络安全新趋势

《网络安全法》自2017年施行以来&#xff0c;在维护网络空间安全方面发挥了重要作用。但随着网络环境的日益复杂&#xff0c;网络攻击、数据泄露等事件频发&#xff0c;现行法律已难以完全适应新的风险挑战。 2025年3月28日&#xff0c;国家网信办会同相关部门起草了《网络安全…...

uniapp 小程序 学习(一)

利用Hbuilder 创建项目 运行到内置浏览器看效果 下载微信小程序 安装到Hbuilder 下载地址 &#xff1a;开发者工具默认安装 设置服务端口号 在Hbuilder中设置微信小程序 配置 找到运行设置&#xff0c;将微信开发者工具放入到Hbuilder中&#xff0c; 打开后出现 如下 bug 解…...