IP Library Granted Patent US 10,592,413
Granted Patent B2
US 10,592,413 · App. 16/017,851 · Granted Mar 17, 2020

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 10,592,413
App. No.
16/017,851
Granted
Mar 17, 2020
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—ensuring 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 (55)

1. A method, comprising:

receiving, by a shared cache manager, information about requests from a data consuming application, wherein an application program running on a server accessed by the data consuming application via an application programming interface receives core data as input and returns derived data;

detecting, by the shared cache manager, a changed core data instance from among the core data;

inferring, by the shared cache manager, impacted derived data from the changed core data instance;

pre-caching, by the shared cache manager, an updated version of the impacted derived data by replaying at least one application programming interface access that is dependent on the changed core data instance;

informing, by the shared cache manager, a local cache manager of the changed core data instance and the impacted derived data; and

satisfying, by the shared cache manager, the requests for the changed core data instance and the impacted derived data from a memory cache where a follow-up request can be satisfied by the shared cache manager without accessing the application program.

2. The method of claim 1 , further comprising:

operating the local cache manager on a user device running the data consuming application.

3. The method of claim 1 , further comprising:

connecting the local cache manager to the data consuming application by a bus or local area network.

4. The method of claim 1 , further comprising:

selecting, by the shared cache manager, the local cache manager from a set of local cache managers, wherein the selected local cache manager is at a closest geographic region to a user device running the data consuming application.

5. The method of claim 1 , further comprising:

compressing, by the shared cache manager, the core data and the derived data.

6. The method of claim 1 , further comprising:

securing a transmission between the local cache manager and the shared cache manager using secure sockets layer or transport layer security.

7. The method of claim 1 , the inferring further comprising:

determining, by the shared cache manager, one or more application programming interface calls made by the data consuming application using the changed core data instance.

8. The method of claim 1 , further comprising:

calculating, by the shared cache manager, a cache expiration duration for the impacted derived data in the cache memory; and

determining whether the impacted derived data can be used to satisfy follow-up requests from the local cache manager based on the cache expiration duration.

9. A system, comprising:

a local cache manager configured to:

connect to a data consuming application,

wherein the data consuming application receives derived data in response to passing core data to an application program via an application programming interface;

refresh a local cache of data comprising the core data and the derived data used by the data consuming application;

a shared cache manager running on a caching system configured to:

detect a changed core data instance from among the core data;

infer impacted derived data related to the changed core data instance;

pre-cache an updated version of the impacted derived data by replaying an application programming interface access dependent on the changed core data instance;

inform the local cache manager about the changed core data instance and the impacted derived data;

determine whether the impacted derived data is of continuing interest; and

replay the at least one application programming interface access with the changed core data instance to refresh the impacted derived data from the application programming interface access.

10. The system of claim 9 , wherein the local cache manager runs on a same user device as the data consuming application or connects to the data consuming application through a bus or local area network.

11. The system of claim 9 , wherein the local cache manager runs on an edge server located in a geographic region proximate to a location of a user device running the data consuming application.

12. The system of claim 9 , wherein a transmission between the local cache manager and the shared cache manager is secured using secure sockets layer or transport layer security.

13. The system of claim 9 , the shared cache manager further configured to:

determine one or more application programming interface calls made by the data consuming application using the changed core data instance.

14. The system of claim 9 , the shared cache manager further configured to:

determine a cache expiration duration for the impacted derived data in the cache memory to determine whether the impacted derived data can be used to satisfy follow-up requests from the local cache manager.

15. The system of claim 9 , wherein the data consuming application runs on a mobile device.

16. 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, by a shared cache manager, information about requests from a data consuming application,

wherein an application program running on a server accessed by the data consuming application via an application programming interface receives core data as input and returns derived data;

detecting, by the shared cache manager, a changed core data instance from among the core data;

inferring, by the shared cache manager, impacted derived data from the changed core data instance;

pre-caching, by the shared cache manager, an updated version of the impacted derived data by replaying at least one application programming interface access that is dependent on the changed core data instance;

informing, by the shared cache manager, a local cache manager of the changed core data instance and the impacted derived data; and

satisfying, by the shared cache manager, the requests for the changed core data instance and the impacted derived data from a memory cache where a follow-up request can be satisfied by the shared cache manager without accessing the application program.

17. The non-transitory computer-readable device of claim 16 , wherein the local cache manager runs on the same user device as the data consuming application or is connected to the data consuming application by a bus or local area network.

18. The non-transitory computer-readable device of claim 16 , wherein the local cache manager runs on an edge server located in a geographic region proximate to a location of a user device running the data consuming application.

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

compressing, by the shared cache manager, the core data and the derived data.

20. The non-transitory computer-readable device of claim 16 , wherein a transmission between the local cache manager and the shared cache manager is secured using secure sockets layer or transport layer security.

Assignments (2)
CHANGE OF NAME Recorded Dec 18, 2024
From: SALESFORCE.COM, INC.
To: SALESFORCE, INC.
Reel/Frame 069717/0353 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 17, 2018
From: PACK, RICHARD PERRY, III
To: SALESFORCE.COM,INC.
Reel/Frame 046371/0568 →
Continuity (2)
Continuation 15169568 · May 31, 2016
Related Publication 20180307605A1 · Oct 25, 2018