在MVC中使用outputcache

时间:2015-05-13 15:27:53

标签: asp.net-mvc outputcache

我有一个声明如下的行动

[Route("{language}/Navigation/Test")]
[OutputCache(Duration = 3600, VaryByParam = "none")]
public ActionResult Test()
{
   return View();
}

为了检查outputcache设置,我在视图Test.cstml

中添加了@DateTime.Now.Ticks.ToString()

让我感到困扰的是,当我第一次运行http://localhost/EN/Navigation/Test时,视图会被缓存,页面刷新会返回相同数量的刻度。现在,如果我改变语言并设置http://localhost/DE/Navigation/Test刻度变化的数量,即。视图不是从缓存提供的。

我试图删除VaryByParam =" none"但总是产生相同的结果。

这里有什么问题,无论使用何种语言,如何提供缓存视图。

1 个答案:

答案 0 :(得分:3)

VaryByParam因网址中传递的参数而异。即网址www.stackoverflow.com/page? param1 = 5 。由于DE是与EN不同的网址,因此无法在缓存中找到该网页,因此请求新网页。

来自MSDN

  

以分号分隔的字符串列表,用于更改输出缓存。默认情况下,这些字符串对应于使用GET方法属性发送的查询字符串值,或使用POST方法发送的参数。当此属性设置为多个参数时,输出缓存包含每个指定参数的请求文档的不同版本。可能的值包括none,*和任何有效的查询字符串或POST参数名称。

底线:它基于网址,而不是路由。您可以根据查询字符串进行配置,但不能再进行配置。