.NET Core 2.1 缓存标签助手

3

看起来无法正常工作。真的是非常简单的场景...

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

在VS2017中,我使用IISExpress(在IIS 10中也有相同的行为),并且在浏览器(Chrome)中点击刷新按钮,结果只给出了当前时间?我的代码是基于.Net Core 2.1的。我试过在部分视图和视图组件中使用cache,但它似乎并没有起到缓存作用。

我不确定自己哪里出问题了。

顺带一提,我已经添加了...

services.AddMemoryCache();

需要将Startup的ConfigureServices方法中的缓存添加(虽然根据文档(https://learn.microsoft.com/en-us/aspnet/core/mvc/views/tag-helpers/built-in/cache-tag-helper?view=aspnetcore-2.1),我甚至不需要这样做,因为它会自动添加 - 在底部就这么说)。

这也是使用Razor页面。

2个回答

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

_SomePartial.cshtml

@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers

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

如果这解决了问题,你可能想要将标签助手应用于整个目录而不仅仅是一个文件。通过将addTagHelper指令移动到_ViewImports.cshtml文件中实现此目的。

非常准确。这就是问题所在。感谢您的回答。可惜文档没有包含这个小细节(从我看到的帮助器部分文档中甚至没有)。谢谢。 - stuartw87

0

可能还有另一种可能性导致cache标签助手无法正常工作。

即使我已经正确添加了Microsoft标签助手,我也遇到了同样的问题,我的错误是在expires-on属性中使用了DateTime.Now。请参见下面的代码:

<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)",然后它就可以工作了。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接