假设我们有一个需要20秒运行的数据库查询(用户通过单击浏览器中HTML页面上的按钮来运行它)。 用户会感到不耐烦,只有在10秒后他才会刷新浏览器,只能运行新的查询。
如何停止第一次运行的数据库查询(或阻止第二次运行)?
由于
答案 0 :(得分:3)
第一步是优化该查询,对于大多数查询来说,20秒太长了。用户通常不会容忍这种糟糕的表现。
答案 1 :(得分:1)
我不是专家,但您可以存储他上次在会话中提交查询的时间。如果同一个用户以20秒的速度提交另一个查询,请忽略它。
但这并不是一种蛮力的方式。
答案 2 :(得分:1)
如果这是使用Ajax,请禁用 直到启动查询的按钮 查询完成后。
当用户发出请求时,设置一个 在用户会话中标记,然后 在单独的线程上启动查询。 如果他们再次尝试提交,请检查 国旗,简直忽略了 请求。查询完成后, 重置标志。虽然查询是 运行时,浏览器可以轮询 服务器等待结果。