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

相关推荐
Undoom26 分钟前
Go 语言构建高性能 TUI 终端大模型聊天应用深度解析
后端
念何架构之路1 小时前
Go Socket编程
开发语言·后端·golang
ffqws_1 小时前
Spring Boot 接收前端请求的四种参数方式
前端·spring boot·后端
时空系1 小时前
第13篇:综合实战——制作我的小游戏 Rust中文编程
开发语言·后端·rust
咸鱼咸鱼1 小时前
RustDesk 自建服务端教程:开源远程桌面,完全掌控你的数据
后端
0xDevNull2 小时前
JDK多版本切换安装与配置
java·后端
gQ85v10Db2 小时前
Redis分布式锁进阶第十八篇:本地缓存+分布式锁双锁架构 + 高并发削峰兜底 + 极致性能无损优化实战
redis·分布式·缓存
Java编程爱好者2 小时前
1-5 线程池:Thread+阻塞队列+循环
后端
jnrjian2 小时前
Library Cache Load Lock library cache pins are replaced by mutexes
java·后端·spring
用户9416146933653 小时前
Python 批量获取 A 股全市场 K 线数据并计算技术指标(附完整代码)
后端