我想要的是一个关于ASP.NET代码是禁用浏览器缓存页面所必需的.有很多方法可以影响HTTP头和元标记,我得到的印象是,不同的浏览器需要不同的设置才能正常运行.如果能得到一段参考代码来说明哪些适用于所有浏览器,哪些是特定浏览器(包括版本)所必需的,那就太好了.

关于这个问题有大量的信息,但我还没有找到一个好的参考文献来描述每种方法的优点,以及某项特定技术是否已被更高级别的API取代.

我对ASP.NET3.5SP1特别感兴趣,但如果能得到早期版本的答案也会很好.

本博客条目Two Important Differences between Firefox and 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));
    }
}

推荐答案

这是我们在ASP.NET中使用的:

// Stop Caching in IE
Response.Cache.SetCacheability(System.Web.HttpCacheability.NoCache);

// Stop Caching in Firefox
Response.Cache.SetNoStore();

它停止在Firefox和IE中缓存,但我们还没有try 其他浏览器.这些语句添加了以下响应标题:

Cache-Control: no-cache, no-store
Pragma: no-cache

Asp.net相关问答推荐

DataTables-如何修改来自JSON响应或其他DataTables参数的无结果(ZeroRecords)消息

IE10 SCRIPT5009:__doPostBack未定义

如何为发布模式设置调试错误

使用会话变量有多安全 - asp.net / c#

如何在 IISExpress 上使用带有 localhost 的子域?

异步编程与线程有什么不同?

如何使用 ASP.NET Identity 创建用户并获取新创建的 ID

Response.Redirect 使用 ~ 路径

RestSharp 不反序列化 JSON 对象列表,始终为 Null

来自 IP 地址的经度和纬度值

如何将 ASP.NET MVC5 身份验证添加到现有数据库

ASP.NET vNext 与主机无关,这意味着什么?

使用 ASPNet_Regiis 加密自定义配置部分 - 你能做到吗?

将通用列表绑定到转发器 - ASP.NET

如何从 SQL Server 2008 本身获取客户端 IP 地址?

存在 ios 7 虚拟键盘时,div 元素不会停留在底部

远程计算机无法连接到 Visual Studio Web 服务器

在 ASP.NET MVC 中获取服务器机器名称?

如何加密 web.config 中的一项

ASP.NET Web 窗体中的 jQuery 验证插件