Как кэшировать результаты mvc3 webgrid (чтобы клик по сортировке не делался? - PullRequest
1 голос
/ 24 сентября 2011

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

При нажатии на ссылку столбца для сортировки сохраненный процесс (который немного медленный), который заполняет таблицу / сетку, каждый раз перезапускается и попадает в базу данных. Любые советы и хитрости кэширования будет принята с благодарностью.

Thx!

1 Ответ

2 голосов
/ 24 сентября 2011

Хорошо внутри действия контроллера, которое вызывает метод в вашем репозитории, который должен запрашивать базу данных, вы можете проверить, содержит ли кэш уже результаты.

Вот обычно используемый шаблон:

public ActionResult Foo()
{
    // Try fetching the results from the cache
    var results = HttpContext.Cache["results"] as IEnumerable<MyViewModel>;
    if (results == null)
    {
        // the results were not found in the cache => invoke the expensive 
        // operation to fetch them
        results = _repository.GetResults();

        // store the results into the cache so that on subsequent calls on this action
        // the expensive operation would not be called
        HttpContext.Cache["results"] = results;
    }

    // return the results to the view for displaying
    return View(results);
}
...