如何将站点范围的无缓存标头添加到MVC 3应用程序

Har*_*Liu 23 c# asp.net-mvc asp.net-mvc-3

我构建了一个MVC3应用程序,应用程序有很多页面,现在因为安全问题我需要在http标头中添加无缓存设置,是否有更简单的方法可以做到这一点?如果我们可以修改一个地方然后它将适用于整个应用程序,它将是完美的.

你能帮助我吗?

Mar*_*rko 31

如何在Global.asax中设置事件内的标题Application_PreSendRequestHeaders

编辑 您可以使用Response.Cache.SetCacheability而不是直接设置标题.*

void Application_PreSendRequestHeaders(Object sender, EventArgs e)
{
    Response.Cache.SetCacheability(HttpCacheability.NoCache);
}
Run Code Online (Sandbox Code Playgroud)

在提琴手中测试过.


通过手动设置标题的替代方法.

void Application_PreSendRequestHeaders(Object sender, EventArgs e) {
    Response.Headers.Set("Cache-Control", "no-cache");
}
Run Code Online (Sandbox Code Playgroud)

  • 那是太多没有缓存了!如果你这样做,你将不会缓存所有的javascript,css,图标等,并在你的带宽和响应能力上做很多事情. (12认同)
  • 我知道他说的.我没有-1或任何东西,但我想确保他(以及任何其他读者)知道这种严厉方法的后果是什么.抛出"这是一个aspx文件"的测试,它的适用范围更广. (3认同)
  • @ScottStafford 阅读 OP 请求“如果我们可以修改一个地方,那么它将适用于整个应用程序,它将是完美的。” 显然,可以过滤某些文件,但这不是所要求的。 (2认同)

KCD*_*KCD 14

替代那些想要方法/动作或类/控制器的人 no-cache

[OutputCache(Location = OutputCacheLocation.None)]
public class HomeController : Controller
{
...
}
Run Code Online (Sandbox Code Playgroud)

如下所述:

OutputCacheLocation枚举

无:已为请求的页面禁用输出缓存.此值对应于HttpCacheability.NoCache枚举值.

HttpCacheability枚举

NoCache - 设置Cache-Control:no-cache标头....