【问题标题】:MVC Huge Model Poor PerformanceMVC 巨大模型性能不佳
【发布时间】:2011-09-11 20:29:00
【问题描述】:

我正在使用 MVC 3,我的一个观点是绑定到一个相当大的模型。实际模型有超过 130 个属性(所有这些都在视图中使用)。每次我回发视图时它都非常慢,需要很长时间才能到达服务器端。这是因为我启用了客户端验证吗?

【问题讨论】:

  • 你怎么知道“需要很长时间才能到达服务器端”?这段时间它在做什么?你检查过 JS 调试器吗?只是将 HTML 表单提交给控制器很慢,还是反过来呢? HTML 表单是什么样的? “永远”有多长? ½ 秒? ½ 分钟?
  • 应用蛮力和无知,如果你禁用客户端验证,它会明显更快吗?
  • 您要求用户填写包含 130 个字段的表单?这太疯狂了。如果我看到一个包含这么多字段的表单,我会在键盘上使用的第一个组合键是 Ctrl+W(关闭当前浏览器选项卡)并尝试尽快忘记我对您网站的访问。即使是最官僚的机构也不会要求您填写那么多数据。
  • 没有必要离开这个主题。这不是一个公共应用程序,它是基于 Intranet 的,这些是客户要求。公司雇主必须填写包含 130 多个字段的表格。
  • 尝试告诉他们需要将表单分解为几个向导步骤...

标签: asp.net .net asp.net-mvc asp.net-mvc-3


【解决方案1】:

“命中服务器端”是什么意思?

这看起来像是模型处理的问题,而不是框架的问题。如果您的模型有 5 个或 130 个属性,这并不重要——这根本不应该是用户注意到的。 仔细检查您的模型处理代码以了解长时间运行的操作。如果模型对象那么大,我很确定某处有。

另外,我建议检查客户端-服务器通信是否存在任何问题(javascript、繁重的表单等)。 IE9/Chrome 和 Fiddler 中的内置工具足以跟踪此类问题。

【讨论】:

  • 模型中或模型中没有繁重的处理。 “命中服务器端”是指直到 MVC 执行操作。在我的例子中,表格和模型一样重。
  • 除了客户端验证(以非常重的 JS 结尾......),在 cmets 中指向主要的 post - 模型绑定也可能会增加一点延迟,尽管我不确定如果这也很明显?
  • 禁用客户端验证的速度要快得多。你是对的,模型绑定有点慢,但我预计会发生这种情况。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-16
  • 2012-08-18
相关资源
最近更新 更多