CPC G06F 16/24553 (2019.01) [G06F 9/3834 (2013.01); G06F 12/0261 (2013.01); G06F 16/22 (2019.01); G06F 16/24552 (2019.01); G06F 16/24562 (2019.01); G06F 16/284 (2019.01); H04L 67/1097 (2013.01); H04L 67/568 (2022.05); H04L 67/2885 (2013.01)] | 10 Claims |
1. A method for managing concurrent access to a shared resource:
establishing a plurality of concurrent sessions over a network between a plurality of clients and a content server, including establishing a first session between a first client and the content server;
providing a global cache;
populating the global cache from a data repository;
providing a plurality of session caches, each session cache from the plurality of session caches providing a cache for a corresponding session from the plurality of concurrent sessions, the plurality of session caches including a first session cache for the first session
populating the plurality of session caches from the global cache;
receiving a request from the first client for an object type;
searching for the object type in the first session cache;
based on a determination that the object type cannot be found in the first session cache, searching for the object type in the global cache;
based on a determination that the object type can be found in the global cache, placing a pointer in the session cache that points to the object type in the global cache and incrementing a session counter for tracking references to the object type across the plurality of session caches;
based on a determination that no instances of the object type are in use in the first session, decrementing the session counter for the object type;
incrementing a reference counter upon every instance of using a subtype of the object type in the first session;
decrementing the reference counter upon every instance of releasing the subtype from the first session; and
removing the object type from the global cache based on a determination that the session counter and the reference counter are both zero.
|