A client can use this to cache data that was hard to calculate. The data is not converted in any way so it is the responsability of the client to correct platform depending issues like endianess and structure padding.
Every item in a cache has a 'type', a 'scope', and a unique id. The 'type' can be something like 'lightmap', 'octree', ... The 'scope' can be something like 'myRegion_mySector', ... The 'id' is a unique ID for the cached item in the given type and scope. Avoid using '/' and '\' characters in both type and scope as this may cause conflicts with the given cache (if it caches on a file system for example).
Note that both 'type' and 'scope' can be made default using SetCurrentType() and SetCurrentScope(). If those are set then you can use NULL for type and/or scope in CacheData() and ReadCache(). If you don't use NULL then the given value will override the default values.