【问题标题】:Stopping multiple database access when user refreshes browser用户刷新浏览器时停止多个数据库访问
【发布时间】:2010-03-02 05:03:02
【问题描述】:

假设我们有一个需要 20 秒才能运行的数据库查询(用户通过在浏览器中单击 HTML 页面上的按钮来运行它)。 用户变得不耐烦,仅在 10 秒后刷新浏览器,才运行新的查询。

如何停止第一个正在运行的数据库查询(或阻止第二个运行)?

谢谢

【问题讨论】:

    标签: java database


    【解决方案1】:

    第一步是优化该查询,20 秒对于大多数查询来说太长了。用户通常不会容忍这种糟糕的性能。

    【讨论】:

      【解决方案2】:
      • 如果这是使用 Ajax,请禁用 开始查询的按钮,直到 查询完成后。

      • 当用户发出请求时,设置一个 在用户会话中标记,然后 在单独的线程上启动查询。 如果他们尝试再次提交,请检查 标志,并简单地忽略 要求。查询完成后, 重置标志。虽然查询是 运行时,浏览器可以轮询 服务器正在等待结果。

      【讨论】:

        【解决方案3】:

        我不是专家,但您可以在他的会话中存储他上次提交查询的时间。如果同一用户在 20 秒内提交另一个查询,则忽略它。

        但这并不是真正的蛮力方式。

        【讨论】:

          猜你喜欢
          • 2023-03-17
          • 2011-05-18
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-01-21
          相关资源
          最近更新 更多