如何阻止浏览器显示页面的缓存版本?

时间:2009-05-12 22:28:09

标签: .net asp.net browser caching

一个解决方案是将一个QueryString变量添加到一个随机guid的url,但这看起来有点混乱。是否有某个设置阻止浏览器显示页面的缓存版本?

6 个答案:

答案 0 :(得分:9)

您可以添加这样的元标记。

<meta http-equiv="pragma" content="no-cache" />

答案 1 :(得分:6)

在我们的ASP.Net项目中,我们创建了一个继承自所有其他页面的BasePage。在基页中我们有一个函数

Public Sub DisableCaching()
    With Response
        .Expires = 0
        .ExpiresAbsolute = Date.Today.AddDays(-1)
        .AddHeader("pragma", "no-cache")
        .AddHeader("cache-control", "no-cache")
    End With
End Sub

我们在任何不希望缓存的页面上调用它。

答案 2 :(得分:3)

ONE aproach 将添加'Expires或Cache-Control Header'。

这是从雅虎最佳实践(http://developer.yahoo.com/performance/rules.html

中提取的

此规则有两件事:

* For static components: implement "Never expire" policy by setting far future Expires header
* For dynamic components: use an appropriate Cache-Control header to help the browser with conditional requests

浏览器(和代理)使用缓存来减少HTTP请求的数量和大小,从而加快网页加载速度。 Web服务器使用HTTP响应中的Expires标头告诉客户端可以缓存组件多长时间。这是一个遥远的未来Expires标题,告诉浏览器这个响应在2010年4月15日之前不会过时。

  Expires: Thu, 15 Apr 2010 20:00:00 GMT

如果您的服务器是Apache,请使用ExpiresDefault指令设置相对于当前日期的到期日期。 ExpiresDefault指令的这个示例将Expires日期设置为从请求时起10年。

  ExpiresDefault "access plus 10 years"

基本上,您可以设置到期日期以“通知”浏览器缓存组件已过期。因此,浏览器将再次请求该站点。

假设您需要这个用于Web开发,另一种方法是强制清除缓存。在Firefox上,这可以通过CTRL + F5或CTRL + SHIFT + R。

来完成

希望这有帮助, 卢卡斯

答案 3 :(得分:3)

将Cache-Control标头设置为no-cache。

答案 4 :(得分:2)

尝试以下任何一项:

Response.Cache.SetExpires(DateTime.Now.AddSeconds(360));
Response.Cache.SetCacheability(HttpCacheability.Private)
Response.Cache.SetSlidingExpiration(true);

Page.Response.Cache.SetCacheability(HttpCacheability.NoCache)

另见question

答案 5 :(得分:1)

  

一个解决方案是将一个QueryString变量添加到一个随机guid的url中,但这看起来有点混乱

为什么要凌乱?这是最可靠的方式。它不是必需的,它可能是当前的时间。