我有一个声明如下的行动
[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"但总是产生相同的结果。
这里有什么问题,无论使用何种语言,如何提供缓存视图。
答案 0 :(得分:3)
VaryByParam
因网址中传递的参数而异。即网址www.stackoverflow.com/page? param1 = 5 。由于DE
是与EN
不同的网址,因此无法在缓存中找到该网页,因此请求新网页。
来自MSDN
以分号分隔的字符串列表,用于更改输出缓存。默认情况下,这些字符串对应于使用GET方法属性发送的查询字符串值,或使用POST方法发送的参数。当此属性设置为多个参数时,输出缓存包含每个指定参数的请求文档的不同版本。可能的值包括none,*和任何有效的查询字符串或POST参数名称。
底线:它基于网址,而不是路由。您可以根据查询字符串进行配置,但不能再进行配置。