【问题标题】:Using outputcache in MVC在 MVC 中使用输出缓存
【发布时间】:2015-07-25 00:03:08
【问题描述】:

我有一个动作声明如下

[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 时,视图被缓存并且页面刷新返回相同数量的滴答声。现在,如果我更改语言并设置 http://localhost/DE/Navigation/Test 刻度更改数,即。视图不是从缓存中提供的。

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

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

【问题讨论】:

    标签: asp.net-mvc outputcache


    【解决方案1】:

    VaryByParam 因 URL 中传递的参数而异。 IE。网址 www.stackoverflow.com/page?param1=5。因为DE 是与EN 不同的URL,所以在缓存中找不到该页面,因此它请求一个新的。

    来自MSDN

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

    底线:它基于 URL,而不是路由。您可以根据查询字符串进行配置,但仅此而已。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-02-13
      • 2011-01-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多