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 中常见的缓存方法。您可以根据实际需求选择合适的缓存策略,以提高应用程序的性能。

相关推荐
码事漫谈17 小时前
C++数据竞争与无锁编程
后端
码事漫谈17 小时前
C++虚函数表与多重继承内存布局深度剖析
后端
Psycho_MrZhang17 小时前
Redis 设计思想总结
数据库·redis·缓存
weixin_4250230018 小时前
Spring Boot + MyBatis Plus JOIN 分页多表查询项目文档
spring boot·后端·mybatis
sxlishaobin18 小时前
Spring Bean生命周期详解
java·后端·spring
肉丸滚球19 小时前
飞算 JavaAI 转 SpringBoot 项目沉浸式体验:高效开发在线图书借阅平台
java·spring boot·后端
问道飞鱼20 小时前
【Rust编程语言】Rust数据类型全面解析
开发语言·后端·rust·数据类型
泉城老铁21 小时前
目前开源架构需要注意的安全问题
spring boot·后端
ZoeGranger21 小时前
【Spring】IoC 控制反转、DI 依赖注入、配置文件和bean的作用域
后端
马卡巴卡21 小时前
分库分表数据源ShardingSphereDataSource的Connection元数据误用问题分析
后端