首页 文章

如何在等待后端处理时响应性地处理前端的UI操作?

提问于
浏览
0

使用StackOverflow问答线程作为示例 - 当您投票,投票或关注某个问题时,您可以看到UI快速响应该操作,并改变了一边的上选票数 .

我们怎样才能达到这个效果?如果将每个此类操作发送到后端进行处理并使用返回的响应来更新UI,您将看到缓慢的更新并感受到故障 . 但是如果在前端放置一些逻辑,你还需要在反映UI上的操作之前处理欺诈/滥用等问题,即 - 在更改上选票数之前,你不需要确保首先是有效用户的有效点击?

1 回答

  • 2
    • 在用户点击任何内容之前,您确保有效用户正在使用该应用 . 这是通过身份验证完成的,它必须包含针对恶意用户的各种保护机制 .

    • 当用户点击时,会呼叫服务器 . 在正确构建的应用程序中,此调用是轻量级的,服务器响应非常快 . 我不知道你为什么相信“你会看到一个缓慢的更新并感受到这些故障” . 将upvote添加到数据库最多需要几百毫秒(包括来自客户端的往返),特别是如果提交是异步的或使用了memcache .

    • 如果数据库更新导致需要执行一些复杂操作,通常不会立即执行这些操作 . 例如,cron作业可能会定期运行以计算新的排名等,正是因为您不希望每个用户都等待 . 或者,创建任务并将其放入任务队列中以在资源可用时执行 - 再次确保用户不等待 .

    • 在某些应用程序中,在服务器的任何响应到达之前,在对服务器进行调用之后立即更新UI . 当呼叫失败的后果可以忽略不计时,您可以这样做 . 例如,如果upvote未能保存在数据库中,那么这不是灾难,特别是如果它在一百万次尝试中发生一次 . 同样,在正确构建的应用程序中,调用失败极少 .

    这是应用开发者需要做出的决定 . 我不会在服务器响应之前更新UI,如果这样的更新可能会导致用户认为现在可以执行其他操作 . 例如,如果用户上传了新照片,我就不会显示要编辑或分享此照片的图标,直到我知道照片已安全保存为止 .

相关问题