我试图缓存一些昂贵的生成图表。所以我在Web.config中做到了:

<caching>
  <outputCacheSettings>
      <outputCacheProfiles>
          <!-- 4 hours : 60 sec x 60 min x 4 hour = 14400 sec -->
          <add name="ChartCacheProfile" duration="14400" varyByParam="none" />
      </outputCacheProfiles>
  </outputCacheSettings>
</caching>


我在Controller中添加了它:

[OutputCache(CacheProfile="ChartCacheProfile")]
public ActionResult GenerateChart()


但这是行不通的...,结果仍然没有被缓存,并且Action总是被执行。最多可能需要1分钟才能完成。

请注意,每次使用不同的参数调用该网址。该参数与生成的图表无关。这就是为什么我放varyByParam="none"

最佳答案

我怀疑这确实是一个错误。对我有用的是在VaryByParam属性中显式设置OutputCache

[OutputCache(CacheProfile="ChartCacheProfile", VaryByParam="None")]
public ActionResult GenerateChart()

关于asp.net - ASP.NET OutputCache variantByParam在Web.config中不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23764926/

10-14 16:31