如何为虚拟路径设置自定义缓存响应标头?

时间:2014-02-20 17:36:23

标签: c# asp.net-mvc caching

我们有一个虚拟URL / bundles。我们希望能够在.NET生命周期的某个时刻检查url是否以/ bundles开头,然后设置标头。我们考虑过使用HttpCachePolicy类并使用setCacheability和setMaxAge。我想知道我们如何将它应用于通过/ bundles路由提供的任何文件?处理这个问题的最佳地点在哪里?

1 个答案:

答案 0 :(得分:1)

听起来你想要这条路线的“不同”缓存行为。

我假设您为此路线设置了一个特殊的控制器。

如果是这样,那么您可以在Controller内的Action Methods上使用OutputCache属性。

[OutputCache(Duration=[InSeconds], ...)]
public ActionResult YourMethod()
{
    ...
}

这将导致使用ASP.NET缓存框架。

可选:您可以使用在IIS WebSite Konfiguration中设置的配置文件,然后必须将该属性与配置文件参数一起使用。

[OutputCache(Profile="YOUR_PROFILE")

IIS将添加相关的响应标头,如Expire / Cache-Control / Last-Modified ...

此外,您还可以获得性能提升的输出缓存功能。

<小时/> 但是,如果要对响应头进行“完全”控制,则必须创建一个自己的IIS处理程序,在其中覆盖输出方法。

因为如果您启用了动态压缩,那么IIS将在ASP.NET生命周期中删除所有响应标头,并在压缩后添加“所需”响应标头,这是在ASP.NET进程之后发生的。

MSDN上的某个位置是IIS缓存层的可视化。但是你必须在MSDN上进行“深度”搜索。我会给你一个链接,但这需要更长的时间..;)

相关问题