在 MVC 中使用输出缓存
Using outputcache in MVC
我有一个动作声明如下
[Route("{language}/Navigation/Test")]
[OutputCache(Duration = 3600, VaryByParam = "none")]
public ActionResult Test()
{
return View();
}
为了检查输出缓存设置,我在视图 Test.cstml
中添加了 @DateTime.Now.Ticks.ToString()
令我烦恼的是,当我 运行 http://localhost/EN/Navigation/Test first time, view gets cached and page refresh returns a same number of ticks. Now if i change language and set http://localhost/DE/Navigation/Test 滴答数发生变化时,即。视图不是从缓存中提供的。
我试图删除 VaryByParam = "none" 但总是产生相同的结果。
这里有什么问题,不管使用什么语言,如何提供缓存视图。
VaryByParam
因 URL 中传递的参数而异。 IE。 URL www.whosebug.com/page?param1=5。由于 DE
与 EN
不同 URL,因此无法在缓存中找到该页面,因此它会请求一个新页面。
来自MSDN
A semicolon-separated list of strings used to vary the output cache. By default, these strings correspond to a query string value sent with GET method attributes, or a parameter sent using the POST method. When this attribute is set to multiple parameters, the output cache contains a different version of the requested document for each specified parameter. Possible values include none, *, and any valid query string or POST parameter name.
底线:它基于URL,而不是路由。您可以根据查询字符串进行配置,但不能再多了。
我有一个动作声明如下
[Route("{language}/Navigation/Test")]
[OutputCache(Duration = 3600, VaryByParam = "none")]
public ActionResult Test()
{
return View();
}
为了检查输出缓存设置,我在视图 Test.cstml
中添加了@DateTime.Now.Ticks.ToString()
令我烦恼的是,当我 运行 http://localhost/EN/Navigation/Test first time, view gets cached and page refresh returns a same number of ticks. Now if i change language and set http://localhost/DE/Navigation/Test 滴答数发生变化时,即。视图不是从缓存中提供的。
我试图删除 VaryByParam = "none" 但总是产生相同的结果。
这里有什么问题,不管使用什么语言,如何提供缓存视图。
VaryByParam
因 URL 中传递的参数而异。 IE。 URL www.whosebug.com/page?param1=5。由于 DE
与 EN
不同 URL,因此无法在缓存中找到该页面,因此它会请求一个新页面。
来自MSDN
A semicolon-separated list of strings used to vary the output cache. By default, these strings correspond to a query string value sent with GET method attributes, or a parameter sent using the POST method. When this attribute is set to multiple parameters, the output cache contains a different version of the requested document for each specified parameter. Possible values include none, *, and any valid query string or POST parameter name.
底线:它基于URL,而不是路由。您可以根据查询字符串进行配置,但不能再多了。