MVC如何使用OutputCache属性缓存要在多个页面上使用的操作的结果

时间:2016-10-31 15:46:37

标签: c# jquery ajax asp.net-mvc caching

我们的应用程序中有一个实例,我们希望能够使用OutputCache缓存多个页面的MVC操作的结果,但我刚刚意识到的是每个页面的基本设置缓存,因此会中断链条。

我的最终目标是当用户点击主页面以执行ajax请求时,一旦所有其他请求完成加载并缓存后续页面的数据。然后,当用户导航到需要MVC操作数据的另一个页面时,它立即可用。

这是我在主页上异步加载数据的脚本,

$(document).one("ajaxStop", function() {

    $.ajax({
        url: '../Companies/CompanySelectList',
        type: 'GET',
        success: function (data) {
            //alert(data.success);
        },
        error: function (request, status, error) {
            //alert(request.responseText);
        }
    })

})

这是我要执行的MVC动作,

[OutputCache(Duration=60)]
public ActionResult CompanySelectList()
{
    List<CompanyDTO> companies = new List<CompanyDTO>();

    var results = _api.Companies.GetCompany();
    if (results.message == null)
    {
        companies.AddRange(results.data);

        //Build up remaining data
        for (int i = results.page + 1; i <= results.totalPages; i++)
        {
            results = _api.Companies.GetCompany(page: i);
            companies.AddRange(results.data);
        }

        companies = companies.OrderBy(n => n.CompanyName).ToList();
        return PartialView("_CompanySelectList", companies);
    }
    else
    {
        ModelState.AddModelError("", results.message);
    }

    return PartialView("");
}

1 个答案:

答案 0 :(得分:0)

您可以尝试将请求定向到Web api控制器,并在其中构建一个简单的手动缓存机制。 可以在此处找到一个示例:Caching in Web API