在我的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()中,它可以正常工作?您有什么想法。
问题在于,当我查看我的网站并查看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()中,它可以正常工作?您有什么想法。
base.OnLoad
中会发生什么?你能否逐步执行代码,并且a)验证设置缓存控制的代码是否已被命中,b)观察响应对象以查看它在哪里更改? - David Brainer