asp.net - 设置 ASP.NET 缓存控制 header

标签 asp.net webforms

在我的 asp.net 表单应用程序中。我正在尝试阻止某些页面的缓存。 为此,我使用 Response.AppendHeader 设置了一系列缓存控制 header 例如

protected override void OnLoad(Eventargs e) 
{
...
Response.ClearHeaders();
Response.AppendHeader("Cache-Control","no-cache");
....
base.OnLoad(e);
}

问题是,当我查看我的网站并查看 Firefox 控制台中的“网络”选项卡以查看请求/响应 header 时,我看到如下行为:

  1. page1.aspx 的 POST 请求/响应,触发重定向(到 page2.aspx) 这里的响应包含正确的 header 。

  2. page2.aspx 的 GET 请求/响应 关联的响应具有缓存控制 header ,只有一个值“pre-check=0”

第二个请求似乎允许页面进行缓存。 注意:page1.aspx 和 page2.aspx 都具有我上面描述的 OnLoad 逻辑。另外,如果我对 page2.aspx 采取一些操作,POST 响应将再次具有正确的 header 。

我在这里缺少什么?我的期望是,OnLoad 中的逻辑应该意味着我总是在响应中获取 header ,因此“总是”获取页面的当前版本?

我看到的是 Firefox 正在加载该页面的缓存版本。

我正在考虑在请求网址中创建一个随机标识符来强制执行此操作,但这似乎有点严厉。

-----更新----- 看来,这可能与“OnLoad”中的缓存代码有关。 我已将这些 header 添加到页面的 Page_Load() 中,它工作正常吗? 有任何想法。

最佳答案

尝试将 Response.AppendHeader("Cache-Control","no-cache"); 替换为

Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.Cache.SetNoStore();

并确保您没有 @ OutputCache directive并且不是explicitly preventing cache control 。请参阅this MSDN page on SetCacheabilitySetNoStore .

关于asp.net - 设置 ASP.NET 缓存控制 header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8791424/

相关文章:

javascript - 在 asp.net 中显示警告框重定向到空白页面,然后返回原始页面

c# - 如何从共享类中访问 ViewState?

asp.net-mvc-3 - 带有 WebForms 的 MVC3 路由

c# - 如何在 ASP.NET IDENTITY 中添加自定义表?

c# - WCF 双工 : Send callback to a specific subscribed ASP. NET Webforms 客户端

asp.net - 大型数据列表的替代 UI 控件,而不是 DropDownList

asp.net - 如何制作asp :GridView sortable?

asp.net - 如何在AJAX中显示状态描述?

asp.net - 使用 ASP.NET Webforms 在另一个页面上打开特定选项卡

c# - 将youtube播放列表嵌入网页中