0

我对 OutputCache 不太了解。

这是我的测试

我有一个返回当前时间的简单动作

[OutputCache(Duration = 3600, VaryByParam = "none", Location = System.Web.UI.OutputCacheLocation.Server)]
public string hour()
{
        return DateTime.Now.ToString("T");
}

在这种情况下,它可以完美运行。

现在我想使用 cacheProfile 这是更新的操作

[OutputCache(CacheProfile = "Cache1Hour")]
public string hour()
{
     return DateTime.Now.ToString("T");
 }

这是 web.config 缓存部分

<caching>
  <outputCacheSettings>
    <outputCacheProfiles>
      <add name="Cache1Hour" duration="3600" varyByParam="none" location="Server"/>
    </outputCacheProfiles>
  </outputCacheSettings>
</caching>

但是当我测试它不起作用。如果我调用 /MyController/hour?id=1 和 /MyController/hour?id=2 我会收到两个不同的结果,尽管我设置了 varyByParam="none" ;

最后,我又做了一个测试

[OutputCache(CacheProfile = "Cache1Hour", VaryByParam ="none")]
public string hour()
{
    return DateTime.Now.ToString("T");
}

对于这种情况,它可以完美运行。

这是什么意思?为什么我的 VaryByParm 属性没有从 web.config 文件中使用?有人可以解释一下吗?

问候

更新 1:这是我的 web.config web.config的打印屏幕

4

1 回答 1

0

在您的 web.config 图像中,持续时间设置为 60(= 1 分钟),而不是您问题中所述的 3600。

 <add name="Cache1Hour" duration="60" varyByParam="none" location="Server"/>
于 2017-11-10T16:03:32.137 回答