我有一种情况要根据条件缓存页面响应,类似于此答案:
Conditional Cache using OutputCacheAttribute in Asp.net MVC 4
但是在我的代码中,这取决于数据库列isCachable
和cacheDuration
,因此,每当我将数据标记为isCachable
时,我都需要进行缓存,否则将放弃缓存过程。
例如:
[DonutOutputCache(Duration = 600)]//if possible make this user defined
[CompressContent]
[MinifyHtml]
[MinifyXml]
public async System.Threading.Tasks.Task<ActionResult> Index()
{
try
{
using (var db = new DBEntities())
{
var countryState = new Models.CountryStates
{
countryList = await db.Countries.Where(c => c.isactive == true && c.sort_name == "us").ToListAsync(),
States = await db.States.Where(s => s.country_id == 231).ToListAsync(),
cacheStatus = await db.cacheProfile.FirstOrDefaultAsync(c=>c.Profile="CacheTest")
};
return View(countryState);
}
}
catch (Exception ex)
{
throw ex;
}
}
在这里我想完成两件事,根据用户在cacheStatus
中定义的内容来确定持续时间,并仅缓存标记为可缓存的用户:
public class cacheStatus
{
public int Duration { get; set; }
public string Profile { get; set; }
public bool isCacheable { get; set; }
}
当响应数据在动态对象响应中可以不同但缓存列将保持不变时,最好的方法是什么?