根据mvc

时间:2019-05-23 12:39:04

标签: c# asp.net-mvc asp.net-mvc-4 caching outputcache

我有一种情况要根据条件缓存页面响应,类似于此答案:

Conditional Cache using OutputCacheAttribute in Asp.net MVC 4

但是在我的代码中,这取决于数据库列isCachablecacheDuration,因此,每当我将数据标记为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; }
}

当响应数据在动态对象响应中可以不同但缓存列将保持不变时,最好的方法是什么?

0 个答案:

没有答案