IP Library Granted Patent US 11,468,175
Granted Patent B2
US 11,468,175 · App. 16/528,571 · Granted Oct 11, 2022

Caching for high-performance web applications

Inventor: Shrey Banga (San Francisco, CA)
Assignee: Salesforce, Inc.
G06F21/602G06F16/9574G06F21/31
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,468,175
App. No.
16/528,571
Granted
Oct 11, 2022
Kind
B2
Abstract

A system can provide a web browser application that generates a request for a data object to a server. The system can include a syncer delegate that intercepts the request from the web browser application and determines whether the requested data object is available in a cache memory. If the data object is available in the cache memory, the requested data object is transferred from the memory to the web browser application and the request is forwarded to a server over a network. If the data object is not available in the cache memory, the request is forwarded to a server over a network. The server can transfer the data object over the network to the syncer delegate, which can provide the data object to the web browser application and update the cache with the newly-received data object.

Claims (77)

1. A data-caching system comprising:

a remote data source;

a processor;

a memory in communication with the processor, the memory configured to store a plurality of instructions executable by the processor to cause the system to:

provide, by the processor, a web browser application, the web browser application configured to generate a request to receive a data object from the remote data source,

wherein the memory is further configured to store a plurality of syncer delegate instructions executable by the processor on which the web browser is operating to cause the system to:

intercept the request from the web browser application;

determine whether the requested data object is available in the memory;

simultaneously provide the requested data object from the memory to the web browser application based on the web browser application being visible at a time of generating the request and forward the request to the remote data source via a network;

receive the requested data object from the remote data source via the network; and

provide the received data object to the web browser application when a determination is made that the received data object is newer than the requested data object based on a timestamp that indicates when the data object in the memory was last updated and store the received data object in the memory.

2. The system of claim 1 , wherein the memory is further configured to store a version attribute for each data object stored in the memory.

3. The system of claim 2 , wherein the request further comprises a request for a plurality of data objects; and further comprising syncer delegate instructions to:

include a plurality of first version attributes for the plurality of requested data objects in the request forwarded to the remote data source via the network; and

receive only those requested data objects from the remote data source having a second version attribute that indicates a same or newer version than the first version attribute.

4. The system of claim 1 , further comprising instructions to:

generate an encryption key; and

create a session, the session associated with a session data object that stores the encryption key, a session identifier, and a version attribute that identifies a version of the encryption key.

5. The system of claim 4 , further comprising instructions to generate a browser cookie, the browser cookie comprising:

a user ID field that identifies a current user; and

a session ID field including the session identifier.

6. The system of claim 4 , further comprising instructions to:

transfer the encryption key from the session data object to the web browser application; and

encrypt the received data object using the encryption key prior to storing the received data object in the memory.

7. The system of claim 5 , further comprising instructions to:

generate an encryption key;

determine that a user ID of a current user of the web browser application matches the user ID field;

determine that a first version attribute of a session data object that identifies a version of an encryption key matches a second version attribute that identifies a current version of the encryption key, the second version attribute stored in a data store of the web browser application; and

transfer the encryption key to the web browser application.

8. The system of claim 1 , wherein the remote data source is configured to transmit a first encryption key version attribute of an encryption key; and

further comprising instructions to:

compare the first encryption key version attribute with a second encryption key version attribute, the second encryption key version attribute stored in a data store of the web browser application;

determine that the first encryption key version attribute reflects a more recent version of the encryption key than the second encryption key version attribute;

overwrite the second encryption key version attribute with the first encryption key version attribute; and

erase a data object encrypted using the encryption key associated with the first encryption key version attribute from the memory.

9. The system of claim 1 , further comprising instructions to:

generate a browser cookie, the browser cookie comprising the timestamp that indicates when the memory was last updated; and

defer data reads from the remote data source based on the timestamp.

10. The system of claim 1 , wherein the web browser application further comprises a first web browser application and a second web browser application, and further comprising instructions to:

determine that at least one of the first web browser application and the second web browser application are not currently visible to a user of the system; and

further comprising syncer delegate instructions to deny access to the memory for a request generated by at least one of the first web browser application and the second web browser application that are not currently visible to the user of the system.

11. A method comprising:

intercepting a request for a data object from a web browser application to a remote data source;

determining, on a computerized device on which the web browser application is operating, whether the requested data object is available in a memory of the computerized device;

simultaneously providing the requested data object from the memory to the web browser application based on the web browser application being visible at a time of generating the request and forwarding the request to the remote data source via a computerized communications network;

receiving the requested data object from the remote data source via the computerized communications network; and

providing the received data object to the web browser application when a determination is made that the received data object is newer than the requested data object based on a timestamp that indicates when the data object in the memory was last updated and storing the received data object in the memory.

12. The method of claim 11 , wherein the memory is further configured to store a version attribute for each data object stored in the memory.

13. The system of claim 12 , wherein the request further comprises a request for a plurality of data objects; the method further comprising:

including a plurality of first version attributes for the plurality of requested data objects in the request forwarded to the remote data source via the computerized communications network; and

receiving only those requested data objects from the remote data source having a second version attribute that indicates a same or newer version than the first version attribute.

14. The method of claim 11 , further comprising:

generating an encryption key; and

creating a session, the session associated with a session data object that stores the encryption key, a session identifier, and a version attribute that identifies a version of the encryption key.

15. The method of claim 14 , further comprising generating a browser cookie, the browser cookie comprising:

a user ID field that identifies a current user; and

a session ID field including the session identifier.

16. The method of claim 14 , further comprising:

transferring the encryption key from the session data object to the web browser application; and

encrypting the received data object using the encryption key prior to storing the received data object in the memory.

17. The method of claim 11 , further comprising:

generating an encryption key;

determining that a user ID of a current user of the web browser application matches the user ID field;

determining that a first version attribute of a session data object that identifies a version of an encryption key matches a second version attribute that identifies a current version of the encryption key, the second version attribute stored in a data store of the web browser application; and

transferring the encryption key to the web browser application.

18. The method of claim 11 , further comprising:

transmitting a first encryption key attribute of an encryption key;

comparing the first encryption key version attribute with a second encryption key version attribute, the second encryption key version attribute stored in a data store of the web browser application;

determining that the first encryption key version attribute reflects a more recent version of the encryption key than the second encryption key version attribute;

overwriting the second encryption key version attribute with the first encryption key version attribute; and

erasing a data object encrypted using the encryption key associated with the first encryption key version attribute from the memory.

19. The method of claim 11 , further comprising:

generating a browser cookie, the browser cookie comprising the timestamp that indicates when the memory was last updated; and

deferring data reads from the remote data source based on the timestamp.

20. The method of claim 11 , wherein the web browser application further comprises a first web browser application and a second web browser application, and the method further comprises:

determining that at least one of the first web browser application and the second web browser application are not currently visible to a user of the system; and

denying access to the memory for a request generated by at least one of the first web browser application and the second web browser application that are not currently visible to the user of the system.

Assignments (2)
CHANGE OF NAME Recorded Dec 18, 2024
From: SALESFORCE.COM, INC.
To: SALESFORCE, INC.
Reel/Frame 069717/0427 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 21, 2022
From: BANGA, SHREY
To: SALESFORCE.COM, INC.
Reel/Frame 060258/0776 →