【问题标题】:2 or 1 request to server: In Asp.net Mvc Does using "- @Html.Action("")-" in view makes 2 requests to server对服务器的 2 或 1 个请求:在 Asp.net Mvc 中是否使用“-@Html.Action("")-" 向服务器发出 2 个请求
【发布时间】:2011-12-08 18:41:03
【问题描述】:

假设:我有 2 个动作(动作名称 = A,B)和 2 个视图,每个动作一个视图。

View for Action "A" 如下所示

@*codes*@
    @Html.Action("B")    
    @*calling action 'B' to render its content from view of action'A'*@
@*more codes*@

现在我的问题是从操作“A”的角度询问操作“B”的内容是否从用户(请求操作 A 的内容)向网络服务器发出 2 个请求,并由服务器向其自身(或其他东西)发出内部请求像那样)。或者可能是我需要确保在从视图中调用操作时考虑性能的事情。

【问题讨论】:

    标签: c# asp.net asp.net-mvc asp.net-mvc-3 asp.net-mvc-2


    【解决方案1】:

    是的,控制器被初始化并且被称为位的动作在相同的上下文中被执行。但是没有隐含所有网络开销的第二个 http 请求。

    以这种方式执行事情肯定会存在一些性能缺陷,但它确实会进行一些分析以查看造成了多少损害。

    【讨论】:

      【解决方案2】:

      任何时候您通过Html.Action()Html.RenderAction() 从视图呈现操作时,您正在创建一个全新的请求到服务器 到MVC,这反过来调用(大部分)默认请求管道。虽然这不是一个额外的网络请求,但它仍然有些昂贵。

      与标准请求相比,MVC 团队已考虑减少“子操作请求”的开销,但它仍然是 MVC 管道的 2 次单独执行。

      是的,RenderAction(较慢)与 RenderPartial(较快)的性能存在显着差异。根据定义,RenderAction 必须运行整个 ASP.NET 管道来处理在系统看来是新的 HTTP 请求,而 RenderPartial 只是向现有视图添加额外内容。

      -Brad Wilson,ASP.NET MVC 团队的高级开发人员

      (source)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-09-29
        • 1970-01-01
        • 1970-01-01
        • 2016-08-09
        • 1970-01-01
        相关资源
        最近更新 更多