Кэширование страниц в зависимости от состояния в MVC - PullRequest
0 голосов
/ 23 мая 2019

У меня есть ситуация, когда я хочу кэшировать ответ страницы на основе условия, подобного этому ответу:

Условное кэширование с использованием OutputCacheAttribute в 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; }
}

Каким должен быть лучший способ для достижения этой цели, когда данные ответа могут отличаться по реакции динамических объектов, но столбцы кэша останутся прежними?

...