具有 vary-by-route 属性的缓存标签助手

Cache tag helper with vary-by-route attribute

我想使用具有 vary-by-route 属性的缓存标签助手,但我不确定我的实现是否正确。

我的路线形状如下:http://mywebsite.com/category/job/region/department/city

"category/job/region/department/city" 是我在 Startup.cs 的路由模板中定义的路径参数:

app.UseMvc(routes =>
            {
                routes.MapRoute(
                    name: "DB_Pages",
                    template: "{**path}",
                    defaults: new { controller = PathHelper.GetControllerName<PageController>(), action = nameof(PageController.Page) });
      });

我想缓存一个出现在所有页面上的菜单,但内容取决于 url。所以我在我的视图组件输出中设置 (razor - Default.chtml) :

<cache expires-sliding="@TimeSpan.FromHours(24)" vary-by-route="path">
    <!-- Dynamic Html code -->
</cache>

但是当我访问同一个 url 两次时,我看不出有什么不同。我想知道缓存是否正常工作。

PS:我有app.UseResponseCaching();在 Startup.cs(我不确定这是否相关)

这是一个工作演示:

启动:

app.UseEndpoints(endpoints =>
            {
                endpoints.MapControllerRoute(
                    name: "default",
                    pattern: "{controller=Home}/{action=Index}/{path?}");

            });

查看:

<cache expires-sliding="@TimeSpan.FromHours(24)" vary-by-route="path">
    Current Time Inside Cache Tag Helper: @DateTime.Now
</cache>

结果: