使用最新的.net Core Razor Tag Helpers,我在index.cshtml文件中有以下expires-after和expires-on用法。
当我每秒刷新页面时,第一行(expires-after)每隔5秒就会改变一次。
当我每秒刷新页面时,第二行(expires-on)每秒都会更改一次。我希望两条线的行为相同。
expires after (working): <Cache expires-after="@TimeSpan.FromSeconds(5)">
@DateTime.Now</Cache>
expires on (not working) <Cache expires-on="@DateTime.Now.AddSeconds(5)">
@DateTime.Now</Cache>
答案 0 :(得分:0)
您为&#34; expires-on&#34;设置新值每次呈现页面时。 看起来MVC框架的缓存机制每次刷新缓存时都会刷新缓存&#34; expires-on&#34;已设定。 您的示例的一个小调整,如下所示,给出了您期望的行为:
<Cache expires-on="@(new DateTime(DateTime.Now.Year,DateTime.Now.Month,DateTime.Now.Day, DateTime.Now.Hour, DateTime.Now.Minute, (int)(DateTime.Now.Second/10) * 10)).AddSeconds(10)">
@DateTime.Now</Cache>
(这是针对c#Razor模板。) 这个调整是有效的,因为&#34; expires-on&#34;的新表达式提供一个保持不变的值,除了每10秒一个新值。这里的表达方式更清晰:
(new DateTime(DateTime.Now.Year,
DateTime.Now.Month,
DateTime.Now.Day,
DateTime.Now.Hour,
DateTime.Now.Minute,
(int)(DateTime.Now.Second/10) * 10))
.AddSeconds(10)