Use a thread-local per-request cache to cache:
- User + permission + space = true/false at the SpacePermissionManager level
- user has useConfluence permission at the PermissionManager level
This should remove a significant number of duplicated permission checks per request, hopefully helping performance on systems with unusual user management setups. It's unlikely to have a gigantic effect on systems with small numbers of users/groups/spaces, though.