Tag Helpers Cache expires-on意外失败

时间:2017-01-26 00:07:19

标签: asp.net-core asp.net-core-tag-helpers

使用最新的.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>

1 个答案:

答案 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)