将处理程序映射到静态扩展

时间:2010-01-04 20:09:08

标签: asp.net http iis caching httphandler

将ASP.NET HTTP处理程序映射到静态扩展名(如 *。css )会产生哪些意外后果?

<add verb="*" path="handler.css" type="Web.HttpHandler.ThemeCssHandler" />

默认情况下, *。css 在applicationHost中注册为静态内容(在IIS7下):

<staticContent lockAttributes="isDocFooterFileName">
    <mimeMap fileExtension=".css" mimeType="text/css" />

单独的IIS通常不能更有效地处理静态请求吗?

关键的动机是在其已知扩展下提供动态CSS,而不是像* .axd(为了简单和与OOTB缓存策略的兼容性)。但我们想确保这不会降低非动态CSS请求的服务。

1 个答案:

答案 0 :(得分:1)

处理CSS文件的常用方法是使用静态文件处理程序,因此替换自己的处理程序具有执行功能的潜力。细节取决于处理程序。

如果需要,您实际上可以使用* .aspx处理程序(尽管需要更多配置)。但是,一个副作用是默认情况下所有动态内容都标有Cache-Control: private,这将阻止代理进行缓存。

默认情况下,静态文件也会启用输出缓存。如果你让它们变得动态,那么你的处理程序必须明确地启用它。