Asp.net 比HttpHandlers更快的东西?

Asp.net 比HttpHandlers更快的东西?,asp.net,performance,httphandler,Asp.net,Performance,Httphandler,在ASP.NET网站上执行方法的最快方式是什么 这个场景非常简单:我有一个方法,当网页被点击时应该执行。页面上没有其他任何事情发生,唯一呈现的输出是“完成”消息。我希望处理过程尽可能快 每一次命中都是唯一的,因此缓存不是一个选项 我的计划是使用HttpHandler并在web.config(mypage.ashx)中配置它,而不是在常规的.aspx页面中配置它。这将大大减少开销 所以我的问题是:有没有比使用HttpHandler更快的方法来实现这一点呢?根据您所做的工作,我不希望看到比使用Htt

在ASP.NET网站上执行方法的最快方式是什么

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

每一次命中都是唯一的,因此缓存不是一个选项

我的计划是使用HttpHandler并在web.config(mypage.ashx)中配置它,而不是在常规的.aspx页面中配置它。这将大大减少开销


所以我的问题是:有没有比使用HttpHandler更快的方法来实现这一点呢?

根据您所做的工作,我不希望看到比使用HttpHandler有太多的改进。我将从编写HttpHandler开始,看看它是如何执行的。如果您需要更快,请尝试在处理请求时更仔细地查看您实际正在做的事情,并查看可以优化的内容。例如,如果要对数据库进行任何日志记录,请尝试写入本地数据库,而不是通过网络。如果它仍然不够快,那么也许可以考虑写一些低层次的东西。在那之前,我会坚持你最容易写的东西

作为参考,我在ASP.NET中编写了一个广告服务器(使用HttpHandlers),它可以在0-15毫秒的加载时间内为广告服务(包括将印象定位并记录到本地数据库)。我以为我做了相当多的处理,但这是一个相当好的响应时间IMHO


几个月后更新

如果清除默认情况下包含的所有HttpModules,这将删除相当多的开销。默认情况下,每个站点都通过机器级别的web.config文件包含以下HttpModules:

  • 输出缓存
  • 会话(用于会话状态)
  • Windows身份验证
  • 形式认证
  • 护照验证
  • 角色经理
  • URL授权
  • 文件授权
  • 匿名身份
  • 侧面图
  • 错误处理程序
  • 服务模型
正如我上面所说,我的广告服务器不使用任何这些,所以我只是在该应用程序的web.config中这样做:

<httpModules>
   <clear />
</httpModules>

如果您需要其中一些,但不是全部,您可以删除不需要的:

<httpModules>
   <remove name="PassportAuthentication" />
   <remove name="Session" />
</httpModules>

ASP.NET MVC注意:ASP.NET MVC需要会话状态模块,除非您执行特定的解决方法。有关更多信息,请参见此问题:


IIS7更新:不幸的是,IIS7中的事情并没有那么简单。这里是

我不确定您的具体场景是什么,但是如果您的页面所做的只是处理一些数据,那么您实际上根本不需要aspx页面或http处理程序。您可以编写一个ASMXWeb服务或WCF服务来完成您需要的工作,这很可能会减少开销。WCF服务甚至不必托管在ASP.NET中。您可以从Windows服务或控制台应用程序托管它,并使用命名管道在proc中调用它。这可能会大大减少调用数据处理代码的开销。

如果您真的必须使用asp.net,您也可以挂接到AuthorizeRequest步骤并从那里截获请求,进行处理并直接编写完成的响应。

很好的调用,我没有想到这可能是一个内部过程。我想我们需要更多地了解他在做什么。我将做一些AJAX/javascript的东西,我需要在服务器上注册客户端事件。我不太确定如何从js执行WCF服务方法,但我肯定会在谷歌上搜索一下目前,HttpHandlers可能是我最好的解决方案。感谢您的回复。从js调用WCF服务实际上比您想象的要容易,特别是当您不需要处理返回值时(只需启动并忘记)。有关更多信息,请参阅。您完全同意:我将执行一些数据库日志记录。我计划创建一些小的文本文件,而不是去数据库。这些文件将在以后处理。但是基于您的经验和您获得的令人印象深刻的响应时间,我将继续使用一个简单的HttpHandler和db访问。我们所做的是在web服务器上放置一个SQL Express实例,该实例将被写入,然后有一项工作将web服务器实例中的所有数据拉入我们的主SQL服务器。