asp.net - 比 HttpHandlers 更快的东西?

标签 asp.net performance httphandler

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

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

每一次点击都是独一无二的,所以缓存不是一种选择。

我的计划是使用 HttpHandler 并在 web.config (mypage.ashx) 而不是常规的 .aspx 页面中对其进行配置。这应该会显着减少开销。

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

最佳答案

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

作为引用,我在 ASP.NET 中编写了一个广告服务器(使用 HttpHandlers),它可以在负载下在 0-15 毫秒内提供广告(包括定位和记录展示到本地数据库)。我以为我正在做很多处理-但恕我直言,这是一个很好的响应时间。

几个月后更新 :

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

  • 输出缓存
  • session (用于 session 状态)
  • Windows身份验证
  • 表单例份验证
  • 护照认证
  • 角色经理
  • 网址授权
  • 文件授权
  • 匿名身份
  • 简介
  • 错误处理程序
  • 服务型号

  • 就像我上面说的,我的广告服务器不使用任何这些,所以我刚刚在该应用程序的 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/

    相关文章:

    asp.net - HttpModule 中的 Response.Redirect

    c# - 如何过滤 asp.net core 项目上的列表

    javascript - 如何使用jquery或javascript获取gridview中的DataKey值?请在回答之前先阅读代码

    MySQL数据库优化和性能: 2 tables or 3 tables?

    c# - 从数据库快速加载大对象图

    mysql - MYSQL、MAX( IF( 条件 ) ) 或子查询条件中的性能

    security - IIS7,web.config 仅允许静态文件处理程序位于网站的目录/上传中

    ASP.NET MVC 2 验证 : Easy way to add CSS class to element on error?

    c# - HTTP 请求未命中 WEB API 2 Controller

    asp.net - httpmodules 和 httphandlers 之间的交互