Asp.Net Core - 将responseCache与ViewComponent

时间:2017-06-29 22:36:13

标签: asp.net asp.net-core asp.net-core-mvc

这是我的ViewComponent:

public class Categories: ViewComponent
{
    private readonly ICategoryService _categories;

    public Categories(ICategoryService categories)
    {
        _categories = categories;
    }      


    public IViewComponentResult Invoke()
    {
        var cat = _categories.GetCategories();
        return View(viewName: "Default", model: cat);
    }        
}

以下是我在视图中使用它的方式:

@await Component.InvokeAsync("Categories")

我尝试使用缓存:

[ResponseCache(Duration = 99999999)]

以上调用方法但无效。

是否可以对视图组件使用缓存?怎么样?

1 个答案:

答案 0 :(得分:14)

您可以通过将View Components包装在缓存标记帮助程序中来缓存它们,如下所示:

<cache expires-after="@TimeSpan.FromMinutes(5)">
    @await Component.InvokeAsync("Categories")
</cache>