在 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。由于 DEEN 不同 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,而不是路由。您可以根据查询字符串进行配置,但不能再多了。