IP Library Granted Patent US 11,194,721
Granted Patent B2
US 11,194,721 · App. 16/821,399 · Granted Dec 7, 2021

Invalidation and refresh of multi-tier distributed caches

Inventor: Richard Perry Pack, III (San Francisco, CA)
Assignee: salesforce.com, inc.
G06F12/0833G06F9/54G06F12/084G06F16/00H04L67/2842G06F2212/314G06F2212/621
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 11,194,721
App. No.
16/821,399
Granted
Dec 7, 2021
Kind
B2
Abstract

To deliver up-to-date, coherent user data to applications upon request, the disclosed technology includes systems and methods for caching data and metadata after it has been synchronously loaded—for future retrieval with a page load time close to zero milliseconds. To provide this experience, data needs to be stored as locally to a user as possible, in the cache on the local device or in an edge cache located geographically nearby, for use in responding to requests. Applications which maintain caches of API results can be notified of their invalidation, and can detect the invalidation, propagate the invalidation to any further client tiers with the appropriate derivative type mapping, and refresh their cached values so that clients need not synchronously make the API requests again—insuring that the client has access to the most up-to-date copy of data as inexpensively as possible—in terms of bandwidth and latency.

Claims (49)

1. A method, comprising:

receiving, by a shared cache manager, a request from a data consuming application that accesses a data source;

determining, by the shared cache manager, a cache key impacted by the request and a client device having a client-side cache that is invalidated by the request by tracking in an invalidation table one or more keys requested by the client device and comparing the cache key to the invalidation table to determine that the invalidated client-side cache is stale, wherein the one or more keys correspond to data instances at the data source; and

causing, by the shared cache manager, a local cache manager to repair the invalidated client-side cache by sending an invalidation message to the local cache manager that indicates the cache key.

2. The method of claim 1 , further comprising:

obtaining, by the shared cache manager, an updated value from the data source using the cache key; and

pushing, by the shared cache manager, the updated value to the local cache manager.

3. The method of claim 1 , further comprising:

obtaining, by the shared cache manager, an updated value from the data source using the cache key; and

storing, by the shared cache manager, the updated value in a shared cache; and

satisfying, by the shared cache manager, a second request from the local cache manager for the updated data from the shared cache.

4. The method of claim 3 , wherein the shared cache is stored in memory.

5. The method of claim 1 , the sending further comprising:

passing, by the shared cache manager, the invalidation message to a message broker accessible by the client device.

6. The method of claim 1 , wherein the data source is a cloud database.

7. The method of claim 1 , wherein the invalidation message comprises a list of mapped types.

8. A system, comprising:

a memory; and

at least one processor coupled to the memory and configured to:

receive a request from a data consuming application that accesses a data source;

determine a cache key impacted by the request and a client device having a client-side cache that is invalidated by the request by tracking in an invalidation table one or more keys requested by the client device and comparing the cache key to the invalidation table to determine that the invalidated client-side cache is stale, wherein the one or more keys correspond to data instances at the data source; and

cause a local cache manager to repair the invalidated client-side cache by sending an invalidation message to the local cache manager that indicates the cache key.

9. The system of claim 8 , the at least one processor further configured to:

obtain an updated value from the data source using the cache key; and

push the updated value to the local cache manager.

10. The system of claim 8 , the at least one processor further configured to:

obtain an updated value from the data source using the cache key;

store the updated value in a shared cache; and

satisfy a second request from the local cache manager for the updated data from the shared cache.

11. The system of claim 10 , wherein the shared cache is stored in memory.

12. The system of claim 8 , wherein to send the at least one processor is further configured to:

pass the invalidation message to a message broker accessible by the client device.

13. The system of claim 8 , wherein the data source is a cloud database.

14. The system of claim 8 , wherein the invalidation message comprises a list of mapped types.

15. A non-transitory computer-readable device having instructions stored thereon that, when executed by at least one computing device, causes the at least one computing device to perform operations comprising:

receiving a request from a data consuming application that accesses a data source;

determining a cache key impacted by the request and a client device having a client-side cache that is invalidated by the request by tracking in an invalidation table one or more keys requested by the client device and comparing the cache key to the invalidation table to determine that the invalidated client-side cache is stale, wherein the one or more keys correspond to data instances at the data source; and

causing a local cache manager to repair the invalidated client-side cache by sending an invalidation message to the local cache manager that indicates the cache key.

16. The non-transitory computer-readable device of claim 15 , the operations further comprising:

obtaining an updated value from the data source using the cache key; and

pushing the updated value to the local cache manager.

17. The non-transitory computer-readable device of claim 15 , the operations further comprising:

obtaining an updated value from the data source using the cache key;

storing the updated value in a shared cache; and

satisfying a second request from the local cache manager for the updated data from the shared cache.

18. The non-transitory computer-readable device of claim 15 , the operations further comprising:

passing the invalidation message to a message broker accessible by the client device.

19. The non-transitory computer-readable device of claim 15 , wherein the data source is a cloud database.

20. The non-transitory computer-readable device of claim 15 , wherein the invalidation message comprises a list of mapped types.

Assignments (2)
CHANGE OF NAME Recorded Dec 18, 2024
From: SALESFORCE.COM, INC.
To: SALESFORCE, INC.
Reel/Frame 069717/0480 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 29, 2021
From: PACK, RICHARD PERRY, III
To: SALESFORCE.COM, INC.
Reel/Frame 057021/0462 →
Continuity (3)
Continuation 16017851 · Jun 25, 2018
Continuation 15169568 · May 31, 2016
Related Publication 20200218658A1 · Jul 9, 2020