我正在尝试缓存一些昂贵的生成图表。所以我在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分钟才能完成。
请注意,每次都会使用不同的参数调用url。该参数与正在生成的图表无关。这就是我放varyByParam="none"
。
答案 0 :(得分:5)
我怀疑它确实是一个错误。对我有用的是在VaryByParam
属性中明确设置OutputCache
:
[OutputCache(CacheProfile="ChartCacheProfile", VaryByParam="None")]
public ActionResult GenerateChart()
答案 1 :(得分:2)
我厌倦了这个问题,不得不为每个动作设置varyByParam。所以这里是输出缓存属性的简单代码,它从web.config获取varyByParam。 https://github.com/unconnected4/MvcOutputCacheFix/blob/master/ParameterizedOutputCacheAttribute.cs