似乎无法正常工作。真的很简单...
<cache expires-after="@TimeSpan.FromMinutes(10)">
@DateTime.Now
</cache>
在VSExpress中的VS2017中(在IIS 10中也是如此)在浏览器(Chrome)中运行刷新,这只是给我当前时间?我正在使用.Net Core 2.1。我正在部分和视图组件中尝试它,但它只是不缓存。
我不确定自己在做什么错。
为了记录,我添加了。
services.AddMemoryCache();
启动Startup ConfigureServices方法(尽管根据文档(https://docs.microsoft.com/en-us/aspnet/core/mvc/views/tag-helpers/built-in/cache-tag-helper?view=aspnetcore-2.1),我什至不需要这样做,因为它是自动添加的-它在底部如此显示。
这也正在使用Razor页面
答案 0 :(得分:2)
问题可能是您尚未添加标签助手。作为故障排除步骤,请将标签助手添加到具有<cache>
元素的视图中。
_SomePartial.cshtml
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
<cache expires-after="@TimeSpan.FromMinutes(10)">
@DateTime.Now
</cache>
如果这可以解决问题,则您可能希望将the tag helpers available放在整个目录中,而不仅仅是一个文件。通过将addTagHelper
指令移动到_ViewImports.cshtml
文件中来实现。
答案 1 :(得分:0)
还有另一种可能使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)"
,并且有效。