将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请求的服务。
答案 0 :(得分:1)
处理CSS文件的常用方法是使用静态文件处理程序,因此替换自己的处理程序具有执行功能的潜力。细节取决于处理程序。
如果需要,您实际上可以使用* .aspx处理程序(尽管需要更多配置)。但是,一个副作用是默认情况下所有动态内容都标有Cache-Control: private
,这将阻止代理进行缓存。
默认情况下,静态文件也会启用输出缓存。如果你让它们变得动态,那么你的处理程序必须明确地启用它。