If you're an Adobe Captivate e-learning developer, there's more than a 50% chance you're also delivering your e-learning courses via some kind of Learning Management System (LMS for short). If so, sooner or later you'll encounter an issue where course participants complain about the content "freezing up" or pausing repeatedly during playback.
This issue is usually caused by LMS server latency. In mild cases it can just be annoying. In serious cases it can completely cripple your e-learning project.
If you haven't already done so, I recommend you read this other blog post first to understand what server latency is all about and how it can impact e-learning. Once you understand the issue better, come back and finish this post to learn about the countermeasures you can use to address it in Adobe Captivate.
Minimize the number of file requests
As mentioned in the post explaining LMS server latency, the greater the number of separate files there are in your course, the more requests will be sent to your LMS server to download them.
Choose HTM/SWF if at all possible
Since SWF output packages any number of content objects inside a single wrapper file, opting to use HTM/SWF as your default e-learning delivery format can greatly reduce load on your LMS because it only usually involves a handful of file requests including a single SWF file per course module, regardless of how many hundreds or thousands of objects that SWF may contain.
So if your target audience has the option of using their desktop PC or laptop to consume your course content, choosing to deliver HTM/SWF instead of HTML5 could be a wise move (even aside from all the other issues you would thereby avoid).
However, if you are forced to go with HTML5 output for at least some users (because they can only access your content via non-Flash enabled mobile devices) then you could use the option in Captivate to output BOTH SWF as well as HTML5. Captivate creates both outputs with a multiscreen.html file that will redirect users to one output or the other depending on what kind of device they are using to access the content.
Since HTML5 output is still showing quite a lot of limitations compared to HTM/SWF, it makes little sense to me to force all course participants to use it, especially when it will also place a greater overall burden on your LMS server.
Use HTML5 as a last resort
If for some reason you MUST go with HTML5, then at least reduce the number of file requests by minimizing the number of images, and other small objects in the course content. For example, rather than having a large number of separate images on a slide, can you just assemble these images in a graphics editor, save as a single graphic, and use that as a slide background instead?
Minimize data requests by modifying Quiz Settings
If you're suffering with serious LMS server latency issues, the number of files in your ourse is not likely to be the biggest culprit. You should probably be looking at reducing the number of data requests. Server latency issues often turn out to be related to the number of times your Captivate content is pinging the LMS server to tell it about the course participant's interaction with the content.
So what can you do about that? Fortunately quite a bit!
For the purpose of this tutorial we're assuming you're using a SCORM-compliant LMS because this gives you the largest number of options for reducing server load. (Choosing any of the non-SCORM reporting solutions in Captivate cuts out most of the options we discuss below.)
All of the options that allow you to reduce LMS server load are found on the Quiz > Reporting dialog. We'll start at the top of the dialog and work our way down, discussing each option you can use.
Use the SendTrackingDataAtEnd Template
When you choose SCORM as your LMS standard, Captivate assigns a default template full of code designed to communicate with the LMS. However, the default template uses Captivate's normal 'verbose' communication method, which deluges the LMS with tons of information.
However, you can opt to use a different Template by selecting one from the dropdown list. The best one for reducing LMS load is called SendTrackingDataAtEnd. (The screenshot below is from Cp 7x, but all versions from Cp5 onward have a similar drop-down to select the SCORM code template.)
How is this template better? Well, instead of sending tracking data to the LMS all the time while the participant is interacting with your course, this template stores the information and only sends it to the LMS when the user exits the course module. That means one request to the server instead of dozens.
This single change is likely to have the biggest positive impact on server latency issues. If you want to test whether or not changes to your content will fix your server latency issue, perform this one change and test the output on your server. If this has little noticeable impact, I doubt whether any of the other changes below will make a difference either. Your server is probably toast.
(By the way, if you have experienced SCORM programmers on your staff, you also have the option of creating a custom template and adding this to the relevant sub folder in the Templates folder of the Captivate install directory under Program Files. But don't attempt this unless you REALLY know what you're doing.)
Report quiz results only, not slide views
Let's be honest. How often do you REALLY need to track what percentage of the slides were viewed by the course participant? In most courses the key result that everyone is interested in is whether or not the participant passed or failed the quiz.
So, unless you have a compelling requirement to track slide views, I recommend you turn off this option by deselecting the relevant Slide Views boxes on the Quiz Preferences screen as shown in the example screenshot below.
Since the number of content slides in a module usually far outnumber the quiz slides, not tracking slide visits will further reduce the data sent to the LMS server.
Don't report Interaction Data
Further down on the Quiz Reporting dialog you will find the section that determines Data to Report to the LMS. This option is selected by default. Deselect it, as shown below, to further reduce load on the server.
In Cp5x versions the option to turn off reporting of interaction data looks a little different on the Quiz Preferences dialog. You select the option to Report Score instead of Interactions and Score (as shown below).
LMS Advanced Settings (a.k.a LMS Customization Settings)
This dialog is reached via buttons near the bottom of the Quiz > Reporting dialog. In Captivate 6 and 7 the button is just called Advanced (as shown in the screenshot above) and when clicked it opens a dialog like the one shown below from Cp 7.0.1.
The two important options here for reducing server load are:
- Send Data On Every Slide - This option is selected by default. Deselect it if you want to prevent Captivate from pinging the LMS every time the user advances from one slide to another. (Please note that only Cp7 or later versions have this option.)
- Never Send Resume Data - This option is deselected by default. Select this option to prevent Captivate from sending data to the LMS about which slide the participant is currently on. (Please note that Resume Data allows the LMS to 'bookmark' the specific slide the course participant was viewing at the time they exited the module. So selecting this option will disable LMS bookmarking. You would only do this if bookmarking was deemed far less important than reducing server latency.)
In earlier Cp 5 and Cp 5.5 the button on the Quiz > Settings dialog is called LMS Customization Settings (as shown in the other screenshot above) and the smaller dialog it opens looks like that shown below. You will notice that you only have half as many options as found in the Cp 7.0.1 version dialog shown above. The only one that will help your latency issue is the one indicated by the arrow; Never Send Resume Data. (But please note again that this will disable LMS bookmarking.)
How many of these these countermeasures should you use?
Well that depends entirely on how bad your server latency issue happens to be. Only you and your IT department are really able to answer that question. If you're not currently suffering with noticeable server latency issues (as indicated by course participants complaining about the content freezing up for no apparent reason), you probably won't need to enact any of the countermeasures outlined above.
Another factor to weigh up is that all configuration options in Captivate have advantages and disadvantages. Each thing you turn on or off will have an impact somewhere else in your content. For example, if your e-learning modules are quite long and most users do not complete them in a single session, having Resume Data bookmarking might be deemed more essential than the small amount of extra server load it imposes.
So, you need to weigh the pros and cons before making a final decision. And the only way to evaluate the pros and cons is by making changes and then testing to verify the resulting differences in server load.
Last resort: Upgrade your server technology!
At the end of the day, if your server technology is outdated or inadequate, none of the measures suggested above may ever be enough to fix "the issue". You could end up just chasing your tail spending hours, days or weeks modifying your courses when the best solution might simply be to lobby your management for budget to buy the level of hardware infrastructure your organization really needs to cope with the amount of learning you need to deliver over the next 5-10 years.
What worked for you?
If the suggestions outlined above prove useful to you, please add a comment below indicating which ones you found to be most effective.
Conversely, if you've found yet another way to reduce server latency in your organization, I'm all ears. Drop me a line using the Contact form on this site.