MVC全局服务器端输出缓存

时间:2014-11-13 06:54:11

标签: asp.net-mvc asp.net-mvc-4

我正在尝试为我们的公共站点设置全局服务器端输出缓存。我可以看到有一个OutputCache属性可以让你控制它。如果我在filterConfig中全局注册它,这样可以正常工作

filters.Add(new OutputCacheAttribute() { Duration = 3600, VaryByParam = "*" });

问题是这会在客户端启用缓存,这会导致我们设置的某些重定向逻辑出现问题。所以我们需要

但是如果将location属性设置为Server

filters.Add(new OutputCacheAttribute() { Duration = 3600, VaryByParam = "*", Location = OutputCacheLocation.Server });

然后这会在某些带有子操作的页面上导致以下异常。

  

子操作的OutputCacheAttribute仅支持Duration,VaryByCustom和VaryByParam值。请不要为子操作设置CacheProfile,Location,NoStore,SqlDependency,VaryByContentEncoding或VaryByHeader值

有没有办法在全球范围内启用服务器端缓存?任何人都可以解释为什么这不起作用?

1 个答案:

答案 0 :(得分:0)

这是MVC的限制。 但是,您可以使用自定义输出缓存。请遵循此link

您可以使用NuGet

安装MvcDonutCaching

并将OutputCache...替换为DonutOutputCache...