dramaling-vocab-learning/backend/DramaLing.Api/Services/Infrastructure/Caching/CacheStrategyManager.cs

28 lines
1.2 KiB
C#

namespace DramaLing.Api.Services.Infrastructure.Caching;
public class CacheStrategyManager : ICacheStrategyManager
{
public TimeSpan CalculateSmartExpiry<T>(string key, T value) where T : class
{
return key switch
{
var k when k.StartsWith("analysis:") => TimeSpan.FromHours(2), // AI 分析結果快取2小時
var k when k.StartsWith("user:") => TimeSpan.FromMinutes(30), // 用戶資料快取30分鐘
var k when k.StartsWith("flashcard:") => TimeSpan.FromMinutes(15), // 詞卡資料快取15分鐘
var k when k.StartsWith("stats:") => TimeSpan.FromMinutes(5), // 統計資料快取5分鐘
_ => TimeSpan.FromMinutes(10) // 預設快取10分鐘
};
}
public TimeSpan CalculateMemoryExpiry(string key)
{
return key switch
{
var k when k.StartsWith("analysis:") => TimeSpan.FromMinutes(30),
var k when k.StartsWith("user:") => TimeSpan.FromMinutes(10),
var k when k.StartsWith("flashcard:") => TimeSpan.FromMinutes(5),
var k when k.StartsWith("stats:") => TimeSpan.FromMinutes(2),
_ => TimeSpan.FromMinutes(5)
};
}
}