You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在.NET Framework 4客户端配置文件中实现缓存?

在.NET Framework 4客户端配置文件中配置缓存的方法

嘿,这就给你梳理清楚在.NET Framework 4客户端应用里通过配置文件实现缓存的步骤~ 咱们用的是System.Runtime.Caching命名空间下的缓存API,它摆脱了对ASP.NET环境的依赖,完全适配客户端应用场景。

1. 先搞定程序集引用

首先得在你的项目里引用System.Runtime.Caching程序集——这是基础操作,没它的话后续的配置和代码都跑不起来。

2. 在app.config中添加缓存配置

你需要在配置文件的<configuration>节点下先注册缓存的配置节,再添加具体的缓存规则。这里给你一个完整的配置示例,直接抄过去改参数就行:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <!-- 注册缓存配置节,让.NET能识别后续的缓存配置 -->
  <configSections>
    <section name="system.runtime.caching" 
             type="System.Runtime.Caching.Configuration.CacheSection, System.Runtime.Caching, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
  </configSections>

  <!-- 具体的缓存配置项 -->
  <system.runtime.caching>
    <memoryCache>
      <!-- 命名缓存实例,你可以自定义名称,比如改成"ClientAppCache" -->
      <namedCaches>
        <add name="Default"
             cacheMemoryLimitMegabytes="100" <!-- 缓存最多占用100MB内存 -->
             physicalMemoryLimitPercentage="20" <!-- 最多占用系统物理内存的20% -->
             pollingInterval="00:02:00" /> <!-- 每2分钟检查一次内存使用情况,触发清理 -->
      </namedCaches>
    </memoryCache>
  </system.runtime.caching>
</configuration>

给你解释下关键配置项:

  • cacheMemoryLimitMegabytes:设置缓存能使用的最大内存量(单位MB),超过这个阈值后,缓存会自动回收旧条目。
  • physicalMemoryLimitPercentage:设置缓存允许占用的物理内存占比(范围0-100),当系统内存使用率达到这个比例时,缓存会启动清理机制。
  • pollingInterval:缓存系统检查内存状态的时间间隔,格式是hh:mm:ss。

3. 在代码里用上配置好的缓存

配置完成后,就可以在客户端代码里通过MemoryCache类调用缓存了,示例代码如下:

using System.Runtime.Caching;

// 获取配置好的默认缓存实例
var cache = MemoryCache.Default;

// 往缓存里加一个条目,10分钟后过期
cache.Add("UserSettings", "{\"Theme\":\"Dark\"}", DateTimeOffset.Now.AddMinutes(10));

// 从缓存里取数据
var userSettings = cache.Get("UserSettings") as string;

// 如果你配置了自定义名称的缓存实例(比如叫"CustomCache"),可以这样获取
var customCache = new MemoryCache("CustomCache");

4. 一些实用注意事项

  • 客户端应用的缓存是进程内缓存,应用关闭后缓存内容就会丢失,这点要注意。
  • 如果没在配置文件里自定义规则,MemoryCache.Default会用默认设置:默认物理内存限制是90%左右,检查间隔2分钟。
  • 要是需要更精细的缓存策略(比如依赖文件变化、滑动过期),可以用CacheItemPolicy来设置,举个例子:
var policy = new CacheItemPolicy
{
    AbsoluteExpiration = DateTimeOffset.Now.AddHours(1), // 1小时后绝对过期
    SlidingExpiration = TimeSpan.FromMinutes(30) // 如果30分钟内没被访问,就过期
};
cache.Add("TempData", "TemporaryValue", policy);

内容的提问来源于stack exchange,提问作者Mahesh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 06:35:26