Hi Dojo,
Can you please tell me exactly is the purpose of the Visio Cache folder ? Does it help cube load a visual overview faster by preventing fetch from the memory ?
Also, what is meant by when a certain .vsdx failed to deserialize/serialize from the Visio Cache folder ?
Thanks in advance.
When opening a Visual Overview for the first time, the Visio file (Vsdx or Vdx extension) is downloaded from the server. The Visio file is in reality a container for different files (xml data, images, etc).
Upon receiving the Visio file, the Visual Overview engine processes the xml structure and translates this to the Visual Overview data structure. This new data structure contains multiple optimizations and is enhanced with a DataMiner context. It's this new data structure which is then saved in the Visio cache folder on the client's machine.
So loading from the Visio cache reduces loading times in 2 areas:
- The file does not need to be fetched from the server, instead it can be read out from the disk which is significantly faster.
- The processing of the xml structure is no longer required as this was done prior to saving the file to the cache.
Note that there is also a memory cache which contains the last opened Visual Overviews opened by the Cube application.
A failure to deserialize a cached file typically means that the data structure in the cached file no longer matches the structure of the Cube application. There are different safety checks that should prevent this from occurring like versioning and comparing the last modified time of the files.
The Visio cache is located on your client PC and indeed allows you to load Visual Overviews without the server needing to send the latest version every time AND without cube needing to parse it again. It contains a serialized version of the document object as it was parsed by cube along with some additional info, such as a file version number (see below) and when the file was last changed.
When a new file is uploaded by yourself or the server notifies the client that a visio file has changed, the cached file is removed so that the new one can be loaded (and also cached).
An outlier reason the file is retrieved from the server instead of from the cache is when cube's file version number doesn't match with what was deserialized from the cache. This is most often due to new shape data being added in a new version, as these are part of serialization.
Getting a message that states (de)serialization has failed means exactly what it says. Somewhere during (de)serialization a problem occurred. Most often this will be due to a failure in reading/writing the cache file. The exception included along with the message should tell you more.
Thank you Toon 🙂
Thank you Sebastiaan 🙂