28 lines
1.2 KiB
C#
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)
|
|
};
|
|
}
|
|
} |