- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
根据 Brad Wilson 的说法,RenderAction 比 RenderPartial 慢。
但是,有没有人得到任何显示性能差异的统计数据?
我正在开发一个应用程序,其中页面由“小部件”组成。
我有两个选择:
View 级别的合成
为每个小部件调用 RenderAction。这是迄今为止最简单的方法,但确实意味着我们正在为每个小部件执行一个完整的 MVC 循环。
Controller 级别的组合
为包含每个小部件所需数据的页面构建一个 ViewModel。为每个小部件调用 RenderPartial。这实现起来要复杂得多,但确实意味着我们只会制作一个 MVC 循环。
我在一个页面上用 3 个不同的小部件测试了上述方法,渲染时间的差异是十分之一秒(几乎不值得担心)。
但是,有没有人得到比这更具体的测试结果,或者是否有尝试过这两种方法的经验?
最佳答案
我最近研究了一个遇到性能问题的应用程序,并发现一个 View 对 RenderAction 进行了四次调用,另外还有一个在布局中。我发现对 RenderAction 的每次调用——即使我添加了一个返回空 View 的虚拟 Action ——花费了大约 200-300 毫秒(在我的本地机器上)。乘以调用次数,您就会在页面上获得巨大的性能提升。在我的例子中,有四次调用导致了大约一秒钟的不必要的服务器端开销。相比之下,对 RenderPartial 的调用大约在 0-10 毫秒的范围内。
我会尽可能避免使用 RenderAction 以支持 RenderPartial。控制者应负责返回所有必要的信息。在小部件的情况下,如果您需要多个小部件的多个 Action ,我会尝试将它们组合成一个 Action ,这样 RenderAction 开销只会发生一次,但如果您的网站性能良好,我会将它们分开以实现更简洁的设计。
编辑:我使用 MiniProfiler 收集了这些信息并访问了该站点。它不是非常准确,但它确实清楚地显示了差异。
编辑:正如 Oskar 在下面指出的那样,有问题的应用程序可能有一些密集的代码,这些代码针对 global.asax 中的每个请求运行。此命中的大小将取决于应用程序代码,但 RenderPartial 将完全避免执行另一个 MVC 循环。
关于asp.net-mvc - RenderAction 与 RenderPartial 性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11228272/
哪个性能最好。我有一个包含文章列表的列表数组。当我列出文章时,我有一个只显示一篇文章的 RenderPartial,父页面遍历所有文章的循环。 Renderpatial 位于父页面循环内。解决此问题的
我收到一个类型错误,但我不明白为什么,我有一个 View、一个 ViewModel、一个 PartialView 和一个 Model。 View 礼物以 giftViewModel 作为模型。gift
我有一些选项卡,我想在单击选项卡时在第二个选项卡内调用 RenderPartial (overviewTab)。 现在,RenderPartial 在页面加载时加载,但我只想在单击概述选项卡时加载它。
这是我的文件夹结构 我想从我所在区域的 View 中调用局部 View 最佳答案 您可以在渲染 View 时指定 View 的完整位置: 更新: 为了从 Shared 文件夹调用部分: 关于c#
我在 protected/views/directory_controller_name 下有一个 php 文件,格式如下 title;?> ... 我在 Controller 中使用经典方法显示
不太明白renderpartial方法中的第三个和第四个参数(return和processOutput)是干什么的。这是我在 Yii 的文档中找到的内容: public string renderPa
我们的网络应用程序包含数十个局部 View ,其中一些是其他 View 的 subview 。我们注意到应用程序在第一次加载时速度很慢,它需要 0.5 到 1 秒来初始化它第一次调用的每个 View
大家好。 我知道这是 MVC 方面的一个非常基本的问题,但我一生都无法让 @Html.RenderPartial 不给我错误。我正在使用 VB.NET 和 Razor。我在网上找到的大多数示例都是用
简短但简单? 我有一个 edit.ascx 在共享文件夹中。我这样调用它: 如果我把它放在子文件夹中,它找不到文件,如何解决? 最佳答案 In terms of how you arrange yo
我有以下代码呈现一个名为 ExchangeRates.ascx 的控件。我想将两个变量传递给控件,currencyCode 和 toCurrencyCode,但我只知道如何传递一个。谁能帮忙?
嗨,我有这行代码: 我需要做的是通过覆盖中可用的附加参数将我的模型传递给它。我写什么?我的模型是 field 。谢谢。 最佳答案 您可以使用 following overload允许您将模型传递给部
这是一个场景:假设我的站点有两个 Controller ,负责显示不同类型的内容 - 页面和文章。我需要将部分 View 嵌入到我的主页中,该主页将列出按某些条件过滤的页面和文章,并显示在每个页面上。
首先,请注意,我注意到具有分页器的常见 Yii 小部件可以转到任何页面而无需重新加载页面,而只需通过 AJAX 请求它,然后更改已加载页面的内容。这样的行为完全可以满足我现在的需求。 我的一个 Vie
我将一些部分 View 链接在一起,并且我需要一种在调用 RenderPartial() 时使用不同模型的方法。大多数关于 SO 的答案都说明要转换为模型类型,但这在编译时是未知的。 该网站有不同的类
我正在尝试结合 ASP.net、knockout 和 javascript 来呈现交互式树。树中的每个节点都有一个“项目”列表和一个“组”列表,其中每个“组”是另一个节点。以下是每个节点最简单形式的
我尝试了很多组合,但仍然出现运行时错误: @{Html.RenderPartial("~/Views/_" + @Model.Id + ".cshtml")}; 有什么明显的我错了。我在模型中正确设置
我当前在我的 View 中渲染 3 个 CGridview,全部使用“renderPartial”和相同的 php 文件。这工作得很好,除了使用分页时,并且用户选择另一页结果时,它会将所有 CGrid
您好,我想知道 mvc C#s 渲染操作是否与直接在我的评论中调用部分一样有效,如果不是,那么效率有多低。 最佳答案 RenderAction 肯定会比 RenderPartial 慢。差异将取决于您
我有一个页面 View ,它进行 ajax 调用并使用 renderPartial 更新页面内容。 所以 page.php -> _pagePartial.php (ajax 更新) 在 page.p
我正在开发一个使用 Yii 框架的项目。当前页面正确加载并传递变量:picks:包含 16 个选项的数组,ticket_ID:只是一个普通 ID。 我想做的是,当按下重置按钮时,调用设置 16 个数组
我是一名优秀的程序员,十分优秀!