设置ASP.NET缓存控制头

4
在我的asp.net表单应用程序中,我正在尝试防止某些页面缓存。为此,我使用Response.AppendHeader设置了一系列缓存控制标头,例如: protected override void OnLoad(Eventargs e) { ... Response.ClearHeaders(); Response.AppendHeader("Cache-Control","no-cache"); .... base.OnLoad(e); }
问题在于,当我查看我的网站并查看Firefox控制台中的Net选项卡以查看请求/响应标头时,我看到以下行为:
1. 触发重定向(到page2.aspx)的page1.aspx的POST请求/响应 此处的响应包含正确的标头。
2. page2.aspx的GET请求/响应 相关的响应只有一个值为'pre-check=0'的缓存控制标头。
第二个请求似乎允许页面缓存发生。 注意:page1.aspx和page2.aspx都具有我上面描述的OnLoad逻辑。而且,如果我在page2.aspx上采取某些操作,则POST响应将再次具有正确的标头。
我在这里错过了什么? 我的期望是,在OnLoad中的逻辑应意味着我始终会在响应中获得标头,因此始终会获得页面的当前版本?
我看到的是Firefox加载其缓存的页面版本。
我正在考虑在请求网址中创建随机标识符以强制执行该操作,但这似乎有些过分。
-----更新----- 看起来,这可能与在'OnLoad'中拥有缓存代码有关。我将这些标头添加到页面的Page_Load()中,它可以正常工作?您有什么想法。
2个回答

6

请提供英文原始内容以便我进行翻译。 - TygerKrash
@TygerKrash 你的头文件可能在某个时候被覆盖吗?base.OnLoad中会发生什么?你能否逐步执行代码,并且a)验证设置缓存控制的代码是否已被命中,b)观察响应对象以查看它在哪里更改? - David Brainer

1

这行代码与服务器端缓存有关。问题仅涉及客户端缓存,这是完全不同的情况。 - mehrdad seyrafi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接