我在明确引用了哪些ASP.NET代码才能使浏览器无法缓存页面。有多种方法可以影响HTTP标头和meta标记,并且给人的印象是,要使不同的浏览器正常运行,需要进行不同的设置。获得一段注释的参考代码来指示哪种代码对所有浏览器都有效,以及对于特定的浏览器(包括版本)是必需的,这真的很棒。
那里有关于此问题的大量信息,但是我还没有找到一个很好的参考来描述每种方法的好处,以及是否已被更高级别的API取代了特定技术。
我对ASP.NET 3.5 SP1特别感兴趣,但是也可以获取早期版本的答案。
此博客条目Firefox和IE Caching之间的两个重要区别描述了一些HTTP协议行为差异。
以下示例代码说明了我感兴趣的事情
public abstract class NoCacheBasePage : System.Web.UI.Page
{
protected override void OnInit(EventArgs e)
{
base.OnInit(e);
DisableClientCaching();
}
private void DisableClientCaching()
{
// Do any of these result in META tags e.g. <META HTTP-EQUIV="Expire" CONTENT="-1">
// HTTP Headers or both?
// Does this only work for IE?
Response.Cache.SetCacheability(HttpCacheability.NoCache);
// Is this required for FireFox? Would be good to do this without magic strings.
// Won't it overwrite the previous setting
Response.Headers.Add("Cache-Control", "no-cache, no-store");
// Why is it necessary to explicitly call SetExpires. Presume it is still better than calling
// Response.Headers.Add( directly
Response.Cache.SetExpires(DateTime.UtcNow.AddYears(-1));
}
}