在 ASP.NET 网站上执行方法的最快方法是什么?
这个场景很简单:我有一个方法,当一个网页被点击时应该执行。页面上没有发生任何其他事情,唯一呈现的输出是“完成”消息。我希望处理尽可能快。
每一次点击都是独一无二的,所以缓存不是一种选择。
我的计划是使用 HttpHandler 并在 web.config (mypage.ashx) 而不是常规的 .aspx 页面中对其进行配置。这应该会显着减少开销。
所以我的问题是:有没有比使用 HttpHandlers 更快的方法来实现这一点?
最佳答案
根据您正在做的事情,我不希望看到比仅使用 HttpHandler 有很多改进。我将首先编写 HttpHandler 并查看它的执行情况。如果您需要它更快,请尝试更仔细地查看您在处理请求时实际执行的操作并查看可以优化的内容。例如,如果您正在对数据库进行任何日志记录,请尝试写入本地数据库而不是通过网络写入。如果它仍然不够快,那么也许考虑写一些较低级别的东西。不过,在那之前,我会坚持使用你最容易写的东西。
作为引用,我在 ASP.NET 中编写了一个广告服务器(使用 HttpHandlers),它可以在负载下在 0-15 毫秒内提供广告(包括定位和记录展示到本地数据库)。我以为我正在做很多处理-但恕我直言,这是一个很好的响应时间。
几个月后更新 :
如果您清除默认包含的所有 HttpModules,这将消除相当多的开销。默认情况下,通过机器级 web.config 文件将以下 HttpModules 包含在每个站点中:
就像我上面说的,我的广告服务器不使用任何这些,所以我刚刚在该应用程序的 web.config 中完成了这个:
<httpModules>
<clear />
</httpModules>
如果您需要其中的一些,但不是全部,您可以删除不需要的:
<httpModules>
<remove name="PassportAuthentication" />
<remove name="Session" />
</httpModules>
ASP.NET MVC 注意: ASP.NET MVC 需要 session 状态模块,除非您执行特定的解决方法。有关更多信息,请参阅此问题:How can I disable session state in ASP.NET MVC?
IIS7 更新:不幸的是,在 IIS7 中事情并不那么简单。这里是 how to clear HTTP Modules in IIS7
关于asp.net - 比 HttpHandlers 更快的东西?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/509978/