Widget Refresh in the CMS

We are excited to share with you a new feature we've been working on for 1.8.10 that should greatly improve the reliability of images in Media RSS and Twitter, and improve the consistency of data in all other modules.

What are we solving?

Xibo has had a long running quirk where a Player would ask for an updated Widget, the CMS would generate one containing new images, which it added to the Players required file list. The Player would show the new Widget but may not have finished downloading the associated images.

Xibo has another quirk where a Widget is loaded and the Player decides that it needs to request a fresh version. It does so, but it cannot wait for that to be returned, so its shows its current version, knowing that the updated one will be shown next time. This can result in stale data that is twice as old as expected.

How is it being solved?

The solution to this comes in 2 parts - firstly the Widget caching introduced in 1.8.8, improved in 1.8.9 and secondly a "Widget Sync" task in 1.8.10.

Prior to 1.8.8 the CMS cached all 3rd party resources (RSS, Twitter, etc) for a predefined period of time. If the resource was in the cache, it generated the Widget based on that cache each time it was requested. Post 1.8.8 the entire Widget is cached as well, based on criteria for each Widget.

The "Widget Sync" task is run by the CMS's task runner and every 5 minutes looks for Widgets that are active on any Display. If it finds any it updates their cache if required, including any images.

If this task is scheduled to run the Player should only ever be served content from the cache, meaning all of the files will be present and the Widget will be fresh at the point the Player sees it.