ASP.NET Core 入门教学七 缓存机制

ASP.NET Core 提供了多种缓存机制,可以帮助您提高应用程序的性能。以下是一些常用的缓存方法:

1. 内存缓存

内存缓存是最简单的缓存形式,它将数据存储在应用程序的内存中。ASP.NET Core 提供了一个 IMemoryCache 接口,用于实现内存缓存。

首先,在 Startup.cs 文件中配置内存缓存:

复制代码
cs 复制代码
public void ConfigureServices(IServiceCollection services)
{
    services.AddMemoryCache();
}

然后,在控制器或服务中使用 IMemoryCache

复制代码
cs 复制代码
public class HomeController : Controller
{
    private readonly IMemoryCache _cache;

    public HomeController(IMemoryImpl```csharp
public HomeController(IMemoryCache cache)
{
    _cache = cache;
}

public IActionResult Index()
{
    var cacheKey = "myData";
    if (!_cache.TryGetValue(cacheKey, out string data))
    {
        data = GetDataFromDatabase();
        _cache.Set(cacheKey, data, TimeSpan.FromMinutes(10));
    }

    return View(data);
}

private string GetDataFromDatabase()
{
    // 从数据库获取数据的逻辑
    return "Hello, World!";
}

2. 分布式缓存

分布式缓存允许多个实例共享缓存数据。ASP.NET Core 支持 Redis 和 SQL Server 作为分布式缓存后端。

以 Redis 为例,首先安装 Microsoft.Extensions.Caching.StackExchangeRedis NuGet 包:

复制代码
dotnet add package Microsoft.Extensions.Caching.StackExchangeRedis

然后在 Startup.cs 文件中配置分布式缓存:

复制代码
cs 复制代码
public void ConfigureServices(IServiceCollection services)
{
    services.AddStackExchangeRedisCache(options =>
    {
        options.Configuration = "localhost";
        options.InstanceName = "SampleInstance";
    });
}

在控制器或服务中使用分布式缓存:

复制代码
cs 复制代码
public class HomeController : Controller
{
    private readonly IDistributedCache _cache;

    public HomeController(IDistributedCache cache)
    {
        _cache = cache;
    }

    public async Task<IActionResult> Index()
    {
        var cacheKey = "myData";
        var data = await _cache.GetStringAsync(cacheKey);

        if (data == null)
        {
            data = GetDataFromDatabase();
            await _cache.SetStringAsync(cacheKey, data, new DistributedCacheEntryOptions
            {
                AbsoluteExpirationRelativeToNow = TimeSpan.FromMinutes(10)
            });
        }

        return View(data);
    }

    private string GetDataFromDatabase()
    {
        // 从数据库获取数据的逻辑
        return "Hello, World!";
    }
}

3. 响应缓存

响应缓存允许您缓存 HTTP 响应,从而减少服务器的负载。ASP.NET Core 提供了 ResponseCaching 中间件来实现响应缓存。

首先,在 Startup.cs 文件中启用响应缓存:

复制代码
cs 复制代码
public void ConfigureServices(IServiceCollection services)
{
    services.AddResponseCaching();
}

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    app.UseResponseCaching();
}

然后,在控制器或操作方法上使用 [ResponseCache] 特性:

复制代码
cs 复制代码
[ResponseCache(Duration = 60, Location = ResponseCacheLocation.Any, NoStore = false)]
public IActionResult Index()
{
    return View();
}

以上就是 ASP.NET Core 中常见的缓存方法。您可以根据实际需求选择合适的缓存策略,以提高应用程序的性能。

相关推荐
颜淡慕潇35 分钟前
【K8S问题系列 |1 】Kubernetes 中 NodePort 类型的 Service 无法访问【已解决】
后端·云原生·容器·kubernetes·问题解决
尘浮生1 小时前
Java项目实战II基于Spring Boot的光影视频平台(开发文档+数据库+源码)
java·开发语言·数据库·spring boot·后端·maven·intellij-idea
尚学教辅学习资料2 小时前
基于SpringBoot的医药管理系统+LW示例参考
java·spring boot·后端·java毕业设计·医药管理
monkey_meng3 小时前
【Rust中的迭代器】
开发语言·后端·rust
余衫马3 小时前
Rust-Trait 特征编程
开发语言·后端·rust
monkey_meng3 小时前
【Rust中多线程同步机制】
开发语言·redis·后端·rust
想要打 Acm 的小周同学呀3 小时前
LRU缓存算法
java·算法·缓存
hlsd#3 小时前
go 集成go-redis 缓存操作
redis·缓存·golang
镰刀出海3 小时前
Recyclerview缓存原理
java·开发语言·缓存·recyclerview·android面试
奶糖趣多多5 小时前
Redis知识点
数据库·redis·缓存