2

我从一个电子邮件列表中看到一篇关于 Javascript 性能的引人入胜的文章。我不记得技术的名称或文章中的措辞,而且那封电子邮件早已不复存在。

文章中提出的想法是,在网页上执行的简单/琐碎的任务——例如发布状态更新、投票或竖起大拇指——应该是瞬间完成的。为此,假设 AJAX 请求将成功,并在用户完成操作后立即在页面上进行视觉更改以指示成功(附加状态更新、显示投票结果等)。

我认为该技术被称为“推定 JavaScript”或“伪性能某事或其他”,但这些搜索不会返回我正在寻找的内容。你们知道我在说什么吗?任何有用的文章的好链接?

4

3 回答 3

3

听起来您所指的是 Alex McCaw 的博客文章,他最初将其命名为“异步用户界面”(AUI):

http://blog.alexmaccaw.com/asynchronous-ui

Joseph 发表的关于多人游戏中使用的技术的回复实际上被称为“航位推算”。回到 1990 年代,当我们使用 56k 拨号调制解调器时,延迟是实时多人游戏中的一个严重问题。为了掩盖延迟,在 Quake 等游戏中引入了“航位推算”,根据玩家的预测方向、速度等推断玩家的路径。

这是我记得的一篇文章,当时使用了这个术语:http ://www.gamasutra.com/view/feature/3230/dead_reckoning_latency_hiding_for_.php

航位推算今天仍在使用。创新主要涉及使用外插而不是插值:而不是等待数据包到达并插值(这总是在真实事件之后),外插用于尝试和预测玩家或物体可能在哪里。然而,真实事件并不能“取代”预测。如果之前的预测不正确,我们将使用任何到达的新数据来尝试创建更准确的新预测,而不仅仅是将玩家或对象“传送”到正确的新位置。

同样的原则也应该适用于 UI 设计。如何设计异步 UI 以提供最佳预测?如果预测失败,如何避免“瞬移”?例如,在民意调查中,如果您提供预测的民意调查结果,而您的预测与结果相差甚远,而您随后通过提供截然不同的结果来“纠正”您的预测,则只会在“更正”到来时混淆用户. 因此,虽然这取决于您的创造力,但您可以使用现有技术,例如投票示例中的“预取”。

于 2013-09-18T14:32:21.710 回答
1

嗯,听起来类似于游戏中的“延迟/延迟补偿”,计算机通过预测(有信心)接下来会发生什么来进行补偿。如果实际发生的事情与预测相矛盾,那么真实事件就会取代预测。

Meteor框架也使用了这种技术。

于 2013-09-18T14:24:56.410 回答
1

我正在寻找的具体文章由 Luke Wroblewski 撰写,标题为“移动设计细节:乐观地执行操作” - http://www.lukew.com/ff/entry.asp?1759。(当我听到“乐观”这个词时,@RogerP 对 Alex McCaw 的提及为我指明了正确的方向)。

LukeW 写了关于选择乐观地认为 AJAX 请求将返回成功并抢先更新 UI 以指示成功的现实世界示例。

于 2013-09-18T15:48:05.260 回答