Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc MVC全局服务器端输出缓存_Asp.net Mvc_Asp.net Mvc 4 - Fatal编程技术网

Asp.net mvc MVC全局服务器端输出缓存

Asp.net mvc MVC全局服务器端输出缓存,asp.net-mvc,asp.net-mvc-4,Asp.net Mvc,Asp.net Mvc 4,我正在尝试为我们的公共站点设置全局服务器端输出缓存。我可以看到有一个OutputCache属性可以让你控制它。如果我像这样在filterConfig中全局注册它,它就可以正常工作 filters.Add(new OutputCacheAttribute() { Duration = 3600, VaryByParam = "*" }); filters.Add(new OutputCacheAttribute() { Duration = 3600, VaryByParam = "*", Lo

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

filters.Add(new OutputCacheAttribute() { Duration = 3600, VaryByParam = "*" });
filters.Add(new OutputCacheAttribute() { Duration = 3600, VaryByParam = "*", Location = OutputCacheLocation.Server });
问题是,这会在客户端启用缓存,这会导致我们设置的某些重定向逻辑出现问题。所以我们需要

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

filters.Add(new OutputCacheAttribute() { Duration = 3600, VaryByParam = "*" });
filters.Add(new OutputCacheAttribute() { Duration = 3600, VaryByParam = "*", Location = OutputCacheLocation.Server });
然后,这会在某些具有子操作的页面上导致以下异常

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


是否有一种全局启用服务器端缓存的方法?有人能解释为什么这不起作用吗?

这是MVC的一个限制。 但是,您可以使用自定义输出缓存。照此

您可以使用


并替换OutputCache。。。有了DonutOutputCache…

我现在就要试一试了。似乎是因为完整页面和部分视图的缓存存储方式不同。MVCDONUTCACH似乎解决了这个问题