交互和目标保存冻结应用程序

时间:2016-05-05 12:50:09

标签: javascript scorm

在我的flash应用程序中,我使用pipwerks scorm包装器来保存不同的scorm值。现在,当我开始保存交互和目标时,需要花费相当多的时间(5-6秒)来保存。这些数组并不大(每个7个元素),为什么需要这么长时间才能保存它?我有本地LMS服务器,因此网络不是问题。

我该如何推动呢?

编辑:刚添加了一些日志,似乎没有"重"元素 - 所有这些元素都需要相同的时间来保存。

2 个答案:

答案 0 :(得分:1)

不是你,而是它们。

您很可能成为SCORM Runtime API执行不力的牺牲品。通常发生的是通过与LMS Runtime API通信的内容“wrapper”发送get / set value命令。而不是LMS缓存学生的尝试,它是长途往返服务器返回数据和设置数据。这可以相当于1-12秒的实际滞后,这会导致在Mac上出现小时玻璃球或沙滩球。它几乎就像是拒绝服务攻击。

目标和交互需要制作多个单独的数据集,以便消息的“垃圾邮件”触发此延迟。如果LMS使用缓存尝试,他们只会在Commit调用中往返服务器。在10个机会中有9个机会,这在他们的系统上很长一段时间都是错误的。并且需要大量的重写来修复它。我将不再列出我遇到的所有平台,因为很多平台都收取订阅费,企业公司付费使用他们的服务。不幸的是它只是一个糟糕的设计他们的系统正在同步阻止对其服务器的调用。 250毫秒DNS延迟x 12个电话=糟糕的用户体验。

我实际上被告知“不要进行那么多的SCORM调用。”和“你能阻止它做这件事”。由于这个原因,我已经取下了LMS;)。野生环境中很大一部分SCO不使用目标和交互,因此许多延迟问题都不受限制。

My Bookmarklet会突出显示您是否成为此延迟https://cybercussion.com/bookmarklets/SCORM的受害者。在查看SCO时使用它,因为它将对API进行一系列状态调用并为您计算实际延迟。我看到每次通话多达400毫秒!

在设计API时,LMS实施最终有3种选择。

  • 缓存:您加载学生尝试并仅在提交调用时发送数据。
  • 缓存混合:您加载学生尝试,仅在提交时发送更改的数据。
  • 非缓存:您进行服务器往返设置和获取数据。在有限数量的SCORM调用中,您将遇到一些延迟。在这种实现方式中,唯一可以解决的问题是,如果断电或网络中断,您可能会保留少量数据。但是上面的选项可以更周期地调用commit来解决这个问题。

我在scorm.com上抽烟测试。开发一个可重复的流程,以便在您遇到此问题的平台上获得支持。即使您的编辑声明它是本地的,我上面强调的阻止调用也可能导致此延迟。

GL

答案 1 :(得分:1)

扩展Mark的答案,我同意听起来LMS正在通过同步xmlhttprequest(又名XHR或AJAX)而不是async进行处理。在此处详细了解同步与异步:https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/Synchronous_and_Asynchronous_Requests

使用同步XHR时,在XHR请求完成之前,页面不会处理任何JavaScript。如果服务器速度很慢,则可能需要几秒钟。如果你一个接一个地重复打电话,它们会大大加起来。可以想象,只需要花一点时间就可以在几页的范围内处理一些活动。从用户的角度来看,课程感觉很糟糕。

同意Mark同意SCORM Cloud中的测试是确保您的课程正常运行的一种很好的方式,而且缓慢的是您当地的LMS,而不是课程本身。

如果您想改善本地测试环境,并且正在使用本地LMS,请在LMS的JavaScript代码库中查找xmlhttprequest或AJAX,看看您可以设置为异步。

相关问题