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

相关推荐
GetcharZp27 分钟前
告别 Python 依赖!用 LangChainGo 打造高性能大模型应用,Go 程序员必看!
后端
阿里加多37 分钟前
第 4 章:Go 线程模型——GMP 深度解析
java·开发语言·后端·golang
小小李程序员1 小时前
Langchain4j工具调用获取不到ThreadLocal
java·后端·ai
GreenTea3 小时前
AI Agent 评测的下半场:从方法论到落地实践
前端·人工智能·后端
我是若尘4 小时前
Harness Engineering:2026 年 AI 编程的核心战场
前端·后端·程序员
IT_陈寒5 小时前
折腾一天才明白:Vite的热更新为什么偶尔会罢工
前端·人工智能·后端
希望永不加班5 小时前
SpringBoot 自动配置类加载顺序与优先级
java·spring boot·后端·spring·mybatis
身如柳絮随风扬6 小时前
Redis如何实现高效插入大量数据
数据库·redis·缓存