asp.net – 比HttpHandlers快的东西?

前端之家收集整理的这篇文章主要介绍了asp.net – 比HttpHandlers快的东西?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在ASP.NET网站上执行方法的最快方法是什么?

该场景非常简单:我有一个方法,当一个网页被击中应该被执行。页面上没有发生任何其他事情,唯一的渲染输出是“完成”消息。我希望处理尽可能快。

每一次命中都是独一无二的,所以缓存不是一个选择。

我的计划是使用HttpHandler并将其配置在web.config(mypage.ashx)中,而不是常规的.aspx页面。这应该显着降低开销。

所以我的问题是真的:有没有比使用HttpHandler更快的方式来完成这个?

解决方法

根据你在做什么,我不会期望看到比只使用HttpHandler有很多改进。我首先要写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

猜你在找的asp.Net相关文章