Two choices -
#1
The TableCaches. No db hits.
e.g. -
Ice.TableCache.XYZ
such as
Ice.TableCache.UserFileCache
This is an in memory and cross app server cache of the UserFile table. Any updates to the table are managed by notifying other app servers of the changes to invalidate the cache on the other app server (Web Farm / Garden friendly).
The core systems use these caches heavily and I expect to see more appearing in the system.
Ice.TableCache.UserFIleCache.GetUserFileByUserID(userID).EmailAddress.
#2
There already is a cache of the User in memory used for all kinds of security needs by the system:
Ice.Security.IceSecurityContext
So…
Ice.Security.IceSecurityContext.User.EmailAddress