【问题标题】:removing Output cache in Index view on update in asp.net mvc在 asp.net mvc 中更新时删除索引视图中的输出缓存
【发布时间】:2011-02-04 14:18:59
【问题描述】:

我正在为某些索引视图使用输出缓存,因为它们包含大量数据。 我想让它针对每个用户。因为视图可能因角色而异。

    [OutputCache(Duration = 3600, VaryByParam = "none", Location = OutputCacheLocation.Client)]
    public ActionResult Index(string schooljaarparam) {
        return View(_db.Lesplaatsens.Where(l => l.Schooljaar.Sch_Schooljaar == schooljaarparam).OrderBy(q => q.Lpl_Gemeente).ThenBy(q => q.Lpl_Instelling).ToList());
    }

现在当有人创建一个新项目并返回到索引视图时。如何移除Index页面的缓存,让新创建的item出现在列表中?

我认为这是一个常见问题,但我还没有找到解决方案。

我猜你需要使用HttpResponse.RemoveOutputCacheItem() 但我如何找到路线。在调试器中哪里可以看到当前缓存的项目?

【问题讨论】:

  • 你要把这个放在你的控制器上吗?
  • 不,这是我的索引操作。
  • 索引操作 => 那么在你的控制器上呢?
  • 不是打开,但是是的,我还能把这个放在哪里? :)
  • 你也可以使用@output缓存的东西把它放在视图上。

标签: asp.net-mvc outputcache


【解决方案1】:

您不能删除缓存的项目,因为它不存在(即您没有在服务器上缓存它)。

当您说Location = OutputCacheLocation.Client 时,浏览器将缓存响应,并且当用户请求同一页面时甚至不会向您的服务器发送新请求,除非缓存过期或用户通过以下方式明确要求最新版本按 F5。

【讨论】:

  • 浏览器并没有真正缓存它,我的意思是,浏览器确实缓存它但仍然向服务器发出请求。然后服务器以304 Not Modified 回答,告诉浏览器使用他自己的缓存。如果浏览器返回 200 OK 那么浏览器将下载页面...
  • @Stefanvds 我刚刚再次测试以确保(我正在使用 ASP.NET MVC 2 进行测试)。 OutputCacheLocation.Client 的行为就像我在答案中描述的那样。
猜你喜欢
  • 2011-07-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-16
  • 1970-01-01
  • 2011-01-22
相关资源
最近更新 更多