繁体   English   中英

.Net Core 2.1 缓存标签助手

[英].Net Core 2.1 Cache Tag Helper

似乎无法让它工作。 很简单的场景...

<cache expires-after="@TimeSpan.FromMinutes(10)">
    @DateTime.Now
</cache>   

在 IISExpress 中的 VS2017 中运行它(在 IIS 10 中也有相同的行为)并在浏览器(Chrome)中点击刷新只是给了我当前时间? 我正在使用 .Net Core 2.1。 我正在部分和视图组件中尝试它,它只是不缓存。

我不确定我做错了什么。

为了记录,我已经添加了..

services.AddMemoryCache();

到启动 ConfigureServices 方法(尽管根据文档( https://docs.microsoft.com/en-us/aspnet/core/mvc/views/tag-helpers/built-in/cache-tag-helper?view= aspnetcore-2.1 ),我什至不需要这样做,因为它是自动添加的——它在底部这么说)。

这也是使用 Razor 页面

问题可能是您没有添加标签助手。 作为故障排除步骤,将标签助手添加到具有<cache>元素的视图中。

_SomePartial.cshtml

@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers

<cache expires-after="@TimeSpan.FromMinutes(10)">
    @DateTime.Now
</cache>

如果这解决了问题,您可能希望使标签助手可用于整个目录,而不仅仅是一个文件。 通过将addTagHelper指令移动到_ViewImports.cshtml文件来做到这_ViewImports.cshtml

可能还有另一种可能使cache标签助手无法工作。

即使我正确添加了 Microsoft 标签助手,我也遇到了同样的问题,我的错误是我使用DateTime.Now作为expires-on属性。 见下文

<cache expires-on="DateTime.Now.AddDays(1)"> @DateTime.Now </cache>

现在日期时间DateTime.Now不应用于cache标记助手,因为每次刷新页面时, expires-on值都会更改,并导致框架使用新的expires-on将条目重新添加到缓存中。

我将expires-on="DateTime.Now.AddDays(1)"更改为expires-after="@TimeSpan.FromMinutes(43200)"并且它起作用了。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM