Builds a cache key for user-scoped data from the entry's own key parts plus the user segment
(UserCacheKeySegment). Returns null when there is no user; callers must then skip the
cache for both read and write.
Parameters
userID: string|null|undefined
the ID of the user the data was loaded for
...parts: string[]
the parts that identify the entry apart from the user, in a fixed order
Returns string|null
the parts and the user segment joined with :, or null when userID is empty
Builds a cache key for user-scoped data from the entry's own key parts plus the user segment (UserCacheKeySegment). Returns
nullwhen there is no user; callers must then skip the cache for both read and write.