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

ASP.NET 中 Cache 的常规使用方法

在 ASP.NET 中,Cache 类提供了一种在服务器内存中存储数据的方法,可以显著提高应用程序性能。以下是 Cache 的常规使用方法:

1. 基本缓存操作

添加缓存项

// 最简单的添加方式
Cache["key"] = "value";// 使用 Insert 方法添加(如果已存在则替换)
Cache.Insert("key", "value");// 带依赖项的添加
Cache.Insert("key", "value", new System.Web.Caching.CacheDependency(Server.MapPath("file.xml")));// 带过期策略的添加
Cache.Insert("key", "value", null, DateTime.Now.AddMinutes(30), // 绝对过期时间System.Web.Caching.Cache.NoSlidingExpiration); // 不使用滑动过期

读取缓存项

object value = Cache["key"];
if(value != null)
{// 使用缓存值string cachedValue = value.ToString();
}// 或者使用更安全的类型转换方式
string cachedString = Cache["key"] as string;
if(cachedString != null)
{// 使用缓存字符串
}

移除缓存项

// 移除单个缓存项
Cache.Remove("key");// 批量移除(通过前缀)
foreach(var item in Cache)
{if(item.ToString().StartsWith("prefix_")){Cache.Remove(item.ToString());}
}

2. 高级缓存策略

滑动过期时间

// 添加缓存项,20分钟内没有被访问则自动移除
Cache.Insert("key", "value", null, System.Web.Caching.Cache.NoAbsoluteExpiration,TimeSpan.FromMinutes(20));

缓存依赖

// 文件依赖
Cache.Insert("key", "value", new System.Web.Caching.CacheDependency(Server.MapPath("data.xml")));// 多个文件依赖
string[] files = new string[] { Server.MapPath("data1.xml"), Server.MapPath("data2.xml") };
Cache.Insert("key", "value", new System.Web.Caching.CacheDependency(files));// SQL 依赖(需要配置数据库)
SqlCacheDependency sqlDep = new SqlCacheDependency("databaseName", "tableName");
Cache.Insert("key", "value", sqlDep);

缓存优先级和回调

Cache.Insert("key", "value", null,System.Web.Caching.Cache.NoAbsoluteExpiration,System.Web.Caching.Cache.NoSlidingExpiration,System.Web.Caching.CacheItemPriority.High, // 高优先级new CacheItemRemovedCallback(OnCacheRemove)); // 移除回调private void OnCacheRemove(string key, object value, CacheItemRemovedReason reason)
{// 处理缓存被移除的情况// reason 参数说明为什么被移除(过期、依赖改变、内存不足等)
}

3. 缓存最佳实践

  1. 合理设置过期时间:根据数据更新频率设置适当的过期策略

  2. 考虑内存使用:不要缓存大量数据,可能影响服务器性能

  3. 处理缓存穿透:对于不存在的键也要缓存(如缓存null值)

  4. 使用缓存前缀:便于管理和批量清除相关缓存

  5. 考虑线程安全:当多个请求可能同时访问和修改缓存时

4. 缓存模式示例

缓存-读取模式 

public string GetData()
{string cacheKey = "data_key";string data = Cache[cacheKey] as string;if(data == null){// 从数据库或其他数据源获取数据data = GetDataFromDatabase();// 将数据存入缓存Cache.Insert(cacheKey, data, null, DateTime.Now.AddMinutes(30), System.Web.Caching.Cache.NoSlidingExpiration);}return data;
}

缓存依赖模式

public void UpdateProduct(Product product)
{// 更新数据库UpdateProductInDatabase(product);// 使相关缓存失效Cache.Remove("products_list");Cache.Remove($"product_{product.Id}");
}

通过合理使用 ASP.NET Cache,可以显著提高应用程序性能,减少数据库访问和计算开销。

http://www.dtcms.com/a/135929.html

相关文章:

  • Unchained 内容全面上链,携手 Walrus 迈入去中心化媒体新时代
  • MATLAB R2023b如何切换到UTF-8编码,解决乱码问题
  • 2026《数据结构》考研复习笔记一(C++基础知识)
  • 5. k8s 之 pod原理与使用
  • 鸿蒙学习笔记(5)-HTTP请求数据
  • Java--批量删除
  • Java与C在典型场景下的性能对比深度剖析
  • 合成数据如何赋能大模型预训练:效果与效率的双重加速器
  • 【记录condapack打包环境到超算上顺利运行】
  • 无锁队列--知识分享
  • conda常用命令简解
  • postgres 数据库信息解读 与 sqlshell常用指令介绍
  • 基于STM32+FPGA的地震数据采集器软件设计,支持RK3568+FPGA平台
  • 在PyTorch中,使用不同模型的参数进行模型预热
  • C语言 —— 指尖跃迁 刻印永恒 - 文件操作
  • 序列化 反序列化实例
  • 【软件工程大系】净室软件工程
  • 整活 kotlin + springboot3 + sqlite 配置一个 SQLiteCache
  • 【Spring】DI(依赖注入)详解:属性注入@Autowired(超详细)、构造方法注入、Setter注入
  • 《JVM考古现场(二十一):奇点黎明·在事件视界编译时空曲率》
  • 智能语音识别+1.2用SAPI实现文本转语音(100%教会)
  • 科技项目验收测试报告有哪些作用?需要多长时间和费用?
  • Shell编程之正则表达式与文本处理器
  • AI 对话高效输入指令攻略(一):了解AI对话指令
  • 解决靶机分配的 IP 地址与 Kali 机器静态 IP 地址冲突的方法
  • Langchain Agent封装的工具
  • Unity导出微信小游戏后无法调起移动端输入框
  • window 凭据管理器密码破解
  • 信息科技伦理与道德0:课程安排
  • 如何实现“一机两用” 寻求安全与效率的完美平衡