A computer server, comprising: a memory; and a processor configured to control the operation of the computer server, the processor configured to cause the computer server to: receive (S305, S805) entitled data from a data server, the entitled data having associated data permissions corresponding to at least one user (USER 1, USER 2) authorized to access the computer server; cache the entitled data, wherein caching the entitled data comprises storing the entitled data, the data permissions, wherein the data permissions are further associated with portions of the entitled data and a cache signature corresponding to the entitled data, wherein the cache signature is based on a data request received from a user (USER 1, USER 2); receive (S320, S610, S710, S805) a first data request for the entitled data from a first user (USER 1) of the computer server; hash the first data request, resulting in the cache signature; if the entitled data matching the cache signature has previously been cached, retrieve (S715, S815) user permissions corresponding to the first user (USER 1) of the computer server; determine (S335, S820) if the first user's permissions intersect with the associated data permissions of the cached entitled data, wherein said determining is based on the first user's permissions and the associated data permissions of the entitled data and if the first user's permissions intersect with the associated data permissions of the entitled data, the computer server is further configured to determine the portions of the entitled data corresponding to the user permissions and transmit (S340, S620) said portions of the cached entitled data to the first user (USER 1); and continue caching the entire entitled data set for responding to future requests from the same user and/or different users (USER 1, USER 2). a memory; and a processor configured to control the operation of the computer server, the processor configured to cause the computer server to: receive (S305, S805) entitled data from a data server, the entitled data having associated data permissions corresponding to at least one user (USER 1, USER 2) authorized to access the computer server; cache the entitled data, wherein caching the entitled data comprises storing the entitled data, the data permissions, wherein the data permissions are further associated with portions of the entitled data and a cache signature corresponding to the entitled data, wherein the cache signature is based on a data request received from a user (USER 1, USER 2); receive (S320, S610, S710, S805) a first data request for the entitled data from a first user (USER 1) of the computer server; hash the first data request, resulting in the cache signature; if the entitled data matching the cache signature has previously been cached, retrieve (S715, S815) user permissions corresponding to the first user (USER 1) of the computer server; determine (S335, S820) if the first user's permissions intersect with the associated data permissions of the cached entitled data, wherein said determining is based on the first user's permissions and the associated data permissions of the entitled data and if the first user's permissions intersect with the associated data permissions of the entitled data, the computer server is further configured to determine the portions of the entitled data corresponding to the user permissions and transmit (S340, S620) said portions of the cached entitled data to the first user (USER 1); and continue caching the entire entitled data set for responding to future requests from the same user and/or different users (USER 1, USER 2). receive (S305, S805) entitled data from a data server, the entitled data having associated data permissions corresponding to at least one user (USER 1, USER 2) authorized to access the computer server; cache the entitled data, wherein caching the entitled data comprises storing the entitled data, the data permissions, wherein the data permissions are further associated with portions of the entitled data and a cache signature corresponding to the entitled data, wherein the cache signature is based on a data request received from a user (USER 1, USER 2); receive (S320, S610, S710, S805) a first data request for the entitled data from a first user (USER 1) of the computer server; hash the first data request, resulting in the cache signature; if the entitled data matching the cache signature has previously been cached, retrieve (S715, S815) user permissions corresponding to the first user (USER 1) of the computer server; determine (S335, S820) if the first user's permissions intersect with the associated data permissions of the cached entitled data, wherein said determining is based on the first user's permissions and the associated data permissions of the entitled data and if the first user's permissions intersect with the associated data permissions of the entitled data, the computer server is further configured to determine the portions of the entitled data corresponding to the user permissions and transmit (S340, S620) said portions of the cached entitled data to the first user (USER 1); and continue caching the entire entitled data set for responding to future requests from the same user and/or different users (USER 1, USER 2).