用途:为 ASP.NET Core Razor Pages 应用提供分层缓存实现模式,在保证数据正确性的前提下提升性能。目标框架为 .NET 8+,启用可空引用类型。
主要能力:按层次组织缓存方案——输出缓存(服务端整页)、响应缓存(客户端与代理)、内存缓存(单实例)、分布式缓存(多实例,Redis)、HybridCache(.NET 9+,本地内存加分布式并自动同步)。同时覆盖缓存失效策略(标签失效、事件驱动失效、基于时间的失效)与反模式(缓存击穿、存储大对象、缓存键不一致)。
使用方式:在 Program.cs 中注册对应服务,如 builder.Services.AddOutputCache(...)、AddResponseCaching()、AddMemoryCache(...)、AddStackExchangeRedisCache(...)、AddHybridCache(...),并按顺序添加中间件 app.UseOutputCache()、app.UseResponseCaching()。页面级可用特性标注,如 [OutputCache(Duration = 60)]、[OutputCache(PolicyName = "LongCache")]、[OutputCache(Duration = 300, VaryByQueryKeys = new[] { "page", "category" })]、[ResponseCache(Duration = 3600, Location = ResponseCacheLocation.Any)]。服务层可用 IMemoryCache、IDistributedCache、IHybridCache 的 GetOrCreateAsync 实现缓存旁路模式,并通过 EvictByTagAsync、RemoveByTagAsync 做标签失效。Razor Pages 还包含分部页缓存(ViewComponent 渲染 HTML 后缓存)与按用户缓存(VaryByCookie、VaryByHeaderNames)。
适用场景:页面不常变化且不含用户特定数据时用输出缓存;静态资源与可被浏览器/CDN 缓存的页面用响应缓存;单实例内昂贵计算与数据库查询用内存缓存;多实例共享数据用分布式缓存;.NET 9+ 推荐 HybridCache。
限制:资料未提供具体性能数据、收费信息或平台支持范围;HybridCache 需 .NET 9+,其余模式面向 .NET 8+。实现不当会导致数据陈旧、缓存击穿与复杂度上升,需按数据新鲜度设置过期时间并统一缓存键生成。