该场景非常简单:我有一个方法,当一个网页被击中应该被执行。页面上没有发生任何其他事情,唯一的渲染输出是“完成”消息。我希望处理尽可能快。
每一次命中都是独一无二的,所以缓存不是一个选择。
我的计划是使用HttpHandler并将其配置在web.config(mypage.ashx)中,而不是常规的.aspx页面。这应该显着降低开销。
所以我的问题是真的:有没有比使用HttpHandler更快的方式来完成这个?
解决方法
作为参考,我在ASP.NET(使用HttpHandlers)中编写了一个广告服务器,可以在0-15ms的负载下投放广告(包括定位和记录本地数据库)。我以为我在做相当多的处理 – 但这是一个非常好的响应时间IMHO。
几个月后更新:
如果清除默认包含的所有HttpModule,这将消除相当多的开销。默认情况下,以下HttpModules通过机器级web.config文件包含在每个站点中:
> OutputCache
>会话(用于会话状态)
> WindowsAuthentication
> FormsAuthentication
> PassportAuthentication
> RoleManager
> UrlAuthorization
> FileAuthorization
>匿名识别
>个人资料
> ErrorHandler
> ServiceModel
像上面所说的那样,我的广告服务器并没有使用任何这些,所以我刚刚在该应用的web.config中完成了这一点:
<httpModules> <clear /> </httpModules>
如果您需要其中一些,但不是全部,您可以删除您不需要的那些:
<httpModules> <remove name="PassportAuthentication" /> <remove name="Session" /> </httpModules>
ASP.NET MVC注意:ASP.NET MVC需要会话状态模块,除非你做一些具体的解决方法。有关详细信息,请参阅此问题:How can I disable session state in ASP.NET MVC?
IIS7的更新:不幸的是,事情在IIS7中并不那么简单。这是how to clear HTTP Modules in IIS7