【问题标题】:How can I prevent some of my views in ASP.NET MVC from being cached?如何防止我在 ASP.NET MVC 中的某些视图被缓存?
【发布时间】:2009-12-31 06:48:35
【问题描述】:

我有一个显示项目列表的视图,当您单击其中一个时,它将带您进入项目页面。我还在该项目的数据库中存储了一个“已查看”标志。

现在,当用户单击返回时,由于“已查看”标志的更改,该项目的样式应该有所不同。但是,每次点击返回时,还是点击进入之前的状态,现在必须点击刷新才能看到页面的实际状态。

如何防止此页面被缓存,以便当用户点击返回时,他们会看到此站点的最新版本,并带有新样式?

【问题讨论】:

    标签: c# .net asp.net-mvc caching


    【解决方案1】:

    使用 OutputCacheAttribute 标记生成列表的控制器操作,并将缓存位置设置为 none,以防止该页面被缓存在客户端上。这应该会导致客户端再次请求该页面。但是,如果用户使用后退按钮,我认为该页面由浏览器提供而无需重新加载,而不管缓存如何。至少在 FF 中,我没有看到它再次使用 Firebug 请求页面。

    [OutputCache( Location = OutputCacheLocation.None )]
    

    【讨论】:

    • 如果它没有被浏览器缓存,它如何在不重新加载的情况下再次提供它?
    • 我原本以为它也会重新加载,但这不是我在 FF 中看到的。
    【解决方案2】:

    在你的控制器动作中调用它:

    Response.Cache.SetCacheability(HttpCacheability.NoCache)
    

    这将阻止浏览器缓存页面。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-20
      • 2012-03-20
      • 1970-01-01
      • 1970-01-01
      • 2018-12-25
      相关资源
      最近更新 更多