【发布时间】:2010-10-25 16:58:12
【问题描述】:
一种解决方案是将 QueryString 变量添加到作为随机 guid 的 url 中,但这似乎有点混乱。是否有某个设置会阻止浏览器显示页面的缓存版本?
【问题讨论】:
-
添加随机生成的查询字符串变量是一个非常古老的技巧;)
标签: .net asp.net browser caching
一种解决方案是将 QueryString 变量添加到作为随机 guid 的 url 中,但这似乎有点混乱。是否有某个设置会阻止浏览器显示页面的缓存版本?
【问题讨论】:
标签: .net asp.net browser caching
您可以像这样添加元标记。
<meta http-equiv="pragma" content="no-cache" />
【讨论】:
在我们的 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
我们在不想缓存的任何页面上调用它。
【讨论】:
一种方法是添加“过期或缓存控制标头”。
摘自 Yahoo Best Practices (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 来完成。
希望这会有所帮助, 卢卡斯
【讨论】:
将 Cache-Control 标头设置为 no-cache。
【讨论】:
试试这个:
Response.Cache.SetExpires(DateTime.Now.AddSeconds(360));
Response.Cache.SetCacheability(HttpCacheability.Private)
Response.Cache.SetSlidingExpiration(true);
Page.Response.Cache.SetCacheability(HttpCacheability.NoCache)
另见question。
【讨论】:
一种解决方案是将 QueryString 变量添加到作为随机 guid 的 url,但这似乎有点混乱
为什么这么乱?这是最可靠的方法。不需要guid,可以是当前时间。
【讨论】: