在ASP.NET网站上执行方法的最快方法是什么?
场景非常简单:我有一个方法,应该在网页被击中时执行.页面上没有其他任何事情发生,唯一呈现的输出是"完成"消息.我希望处理尽可能快.
每一次点击都是唯一的,因此缓存不是一种选择.
我的计划是使用HttpHandler并在web.config(mypage.ashx)中配置它,而不是常规的.aspx页面.这应该会显着减少开销.
所以我的问题是:有没有比使用HttpHandlers更快的方法来实现这一目标?
根据你正在做的事情,我不希望看到比使用HttpHandler有很多改进.我首先编写HttpHandler并查看它的执行情况.如果您需要更快,请在处理请求并查看可以优化的内容时,仔细查看您实际执行的操作.例如,如果您正在对数据库进行任何记录,请尝试写入本地数据库而不是通过网络.如果它仍然不够快,那么可能会考虑写一些较低级别的东西.在那之前,我会坚持用最简单的方式来写.
作为参考,我在ASP.NET中编写了一个广告服务器(使用HttpHandlers),可以在0-15ms内加载广告(包括定位和记录展示到本地数据库).我以为我正在做相当多的处理 - 但这是一个非常好的响应时间恕我直言.
几个月后更新:
如果清除默认包含的所有HttpModule,这将消除相当大的开销.默认情况下,通过机器级web.config文件在每个站点中包含以下HttpModule:
的OutputCache
会话(用于会话状态)
WindowsAuthentication
FormsAuthentication
PassportAuthentication
RoleManager
UrlAuthorization
FileAuthorization
AnonymousIdentification
轮廓
的ErrorHandler
ServiceModel
就像我上面说的,我的广告服务器没有使用其中任何一个,所以我刚刚在该应用程序的web.config中完成了这个:
如果你需要其中一些,但不是全部,你可以删除你不需要的那些:
ASP.NET MVC注意: ASP.NET MVC需要会话状态模块,除非您执行特定的操作来解决它.有关更多信息,请参阅此问题:如何在ASP.NET MVC中禁用会话状态?
IIS7的更新:遗憾的是,IIS7中的事情并不那么简单.以下是如何清除IIS7中的HTTP模块