Improve caching which was reverted
https://gitlab.com/gitlab-org/gitlab-ce/issues/2033
MRs: https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/1014
https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/1028
https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/1027
Proposal: It is difficult task. I think the best we can do it is use user_id in cache key and invalidate it when permission changes. Usually for this purposes, can be used so called cache group. And in same cases you can remove all cache keys inside certain group. I think it is the best solution.