具有 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>
结果:
我想使用具有 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>
结果: