【问题标题】:Can AJAX be used on heavy DB operationsAJAX 可以用于繁重的数据库操作吗
【发布时间】:2013-06-21 18:48:51
【问题描述】:

我有一个 Web 应用程序,上面有很多下拉菜单和网格。

当前,当一个下拉列表的值发生变化时,相关下拉列表中的项目会被填充(繁重的 DB 操作)并且实际上整个页面都会发布到服务器。

问题是在这种情况下可以推荐 Ajax 吗?我听说 Ajax 只适用于轻量级操作。

【问题讨论】:

  • 选项是否经常更改,或者它们是特定于用户的?如果没有,我会考虑在网络服务器上缓存该信息,这样您就不必每次都访问数据库,在这种情况下,ajax 将是一个很好的选择。
  • 我同意 Karl 和 Rob 都是很好的答案 - 我还想看看可以做些什么来加快长期运行的操作 - 已经提到过缓存,但你有没有研究过执行计划长期运行的查询?如果您使用 sql server 2008+,当您在 SSMS 中运行查询时,可以选择显示执行计划,这通常会为您提供提示和代码来实现可以产生巨大差异的提示(通常缺少索引)。在执行嵌套 sql 查询并加入那些而不是嵌套的情况下,还可以考虑取消一些视图 - 也很有帮助。
  • Ajax 在客户端工作,因此它不会在数据库上执行任何操作,您的服务器将承担负载,所以问题是,Ajax 可以处理响应吗?如果它是来自服务器的非常大的响应,您必须确保您的缓冲区可以承受所有响应。您还应该记住,当所有数据都在尝试渲染时,您无法控制它的速度……

标签: c# asp.net ajax vb.net


【解决方案1】:

可以,只需向用户反馈操作需要一段时间即可。操作执行时显示消息或加载图片,操作完成后隐藏。

【讨论】:

    【解决方案2】:

    您可以使用 ajax,但我想提供一个替代解决方案...

    使用 ajax/post/whatever 启动流程,然后使用以下方法之一定期请求反馈:

    • JS 轮询(setInterval)
    • 服务器发送事件
    • 信号R

    这样,用户可以在等待操作完成时导航离开。当收到“操作已完成”反馈时,您可以在更合适的情况下通过页面内通知或电子邮件来提醒用户。

    【讨论】:

    • @SNash。谢谢!不要忘记将最有帮助的答案标记为正确。
    【解决方案3】:

    答案当然是您可以将 AJAX 用于繁重的数据库操作,但也许更好的问题是您应该使用它;答案是视情况而定。剪刀可以剪纸,但不能剪院子;适合工作的正确工具。

    退后一步,听起来您的开发技术选择可能是您的问题的一部分,就像是否使用 AJAX 进行繁重的数据库调用一样。我的观点是,如果您试图避免页面的完整回发,那么您可能会考虑更多基于客户端的实现(例如 KnockoutJS、Backbone、Ember、AngularJS 等),它可以使用对服务器的调用来获取屏幕特定部分所需的数据(通过视图模型)。

    【讨论】:

      猜你喜欢
      • 2020-04-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-07
      • 1970-01-01
      相关资源
      最近更新 更多