# US 11,122,140 B1 · Application state client-side cache for a state-based client-server application

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 11,122,140 B1
- Document ID: US11122140B1
- Status: Granted
- Kind: B1
- Application number: 16/518,151
- Filed: 2019-07-22
- Granted: 2021-09-14
- Earliest claimed: 2006-04-06
- Assignees: Versata Development Group, Inc.
- Applicants: Versata Development Group, Inc.
- Inventors: Jude Arvind Britto; Rajasekhar Vinnakota; David Franke; Douglas Stuart Gray; Deepti Gupta
- Web page: https://patentgrep.com/patent/US11122140B1

## CPC

- G06F 9/542: {Event management; Broadcasting; Multicasting; Notifications}
- G06F 3/0482: Interaction with lists of selectable items, e.g. menus
- H04L 9/40: Network security protocols
- H04L 67/01: Protocols
- H04L 67/568: Storing data temporarily at an intermediate stage, e.g. caching
- H04L 67/5681: Pre-fetching or pre-delivering data based on network characteristics
- H04L 69/329: in the application layer [OSI layer 7]
- G06F 2209/541: Client-server
- G06F 2209/545: Gui
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)

## Abstract

A client updates a display of a user interface associated with a state-based client-server application in accordance with a client-side cache. The server supplies data for a new state and additional data for one or more subsequent states that possibly follow the new state if appropriate one or more operations are performed. When a client request is generated that indicates an operation that causes the application to transition to the new state, the client updates the display in accordance with the data that corresponds to the new state from the client-side cache, if available from the client-side cache. The new state data is available since the server has previously supplied the new state data.

## Claims

### Claim 1

A system for updating a client user interface (UI) associated with a state-based client-server application, comprising:
a servier, the server comprising:
a processor, and
a memory, coupled to the processor, storing code, wherein the code is executable by the processor to cause the server to perform:
sending information from a server indicating an operation of the state-based client-server application, wherein the UI is associated with the state-based client-server application;
providing data from the server to a client; and
providing input from the server to the UI of the client, wherein the input indicates at least one operation of the state-based client-server application, so that, after the client receives the input the client updates a display of the UI with data from a client-side cache, the data corresponding to a new UI state that follows a current state of the state-based client-server application based, at least in part, on the indicated operation, wherein the data supplied by the server to the client corresponds to the new state.

### Claim 2 (depends on 1)

The system of claim 1, wherein the information supplied by the server includes data that corresponds to one or more subsequent states of the state-based client-server application for inclusion in the client-side cache, the one or more subsequent states indirectly following a current state of the state-based client-server application.

### Claim 3 (depends on 2)

The system of claim 2, wherein the code is further executable by the processor to cause the server to perform:
selecting the data that corresponds to the one or more subsequent states based upon at least one of frequency of past usage, location with respect to the new state, size of the state data and whether the subsequent state data would result in an incremental display update.

### Claim 4 (depends on 2)

The system of claim 2, wherein the information provided by the server also includes the data that corresponds to the new state.

### Claim 5 (depends on 2)

The system of claim 2, wherein the code is further executable by the processor to cause the server to perform:
merging the data that corresponds to the one or more subsequent states into the client-side cache, such that it contains only possible future states.

### Claim 6 (depends on 1)

The system of claim 1, wherein the new state data is utilized by the client to update the display without causing a complete refresh of the display.

### Claim 7 (depends on 1)

The system of claim 1, wherein the display provides a representation of a current state of the application or a current state of a session in the application.

### Claim 8 (depends on 1)

The system of claim 1, wherein the new state data is incremental state-difference data corresponding to a change between a current state and the new state.

### Claim 9 (depends on 1)

The system of claim 1, wherein the server is configured to provide the information from a server-side cache when the information is already stored therein, and wherein the server computes the information by processing inputs or provides the information from another store and stores the information in the server-side cache when the information is not already stored in the server-side cache.

### Claim 10 (depends on 9)

The system of claim 9, wherein the client-side cache comprises a tree-structured hierarchical cache.

### Claim 11 (depends on 10)

The system of claim 10, wherein the hierarchical cache is structured as a plurality of nodes interconnected by one or more edges, and wherein each of the nodes corresponds to one of a plurality of states of the application and the edges represent different possible operations from one of the nodes to another one of the nodes.

### Claim 12 (depends on 11)

The system of claim 11, wherein the client-side cache maintains a pointer to a current node included within the plurality of nodes.

### Claim 13 (depends on 1)

The system of claim 1, wherein the code is further executable by the processor to cause the server to perform:
queuing operations within a client-side operation queue when the client has not received a reply from a previous request; and
providing one or more entries from the client-side operation queue in a single request to the server when the client has received a reply to the previous request.

### Claim 14 (depends on 1)

The system of claim 1, wherein the new and subsequent state data is provided in extensible markup language (XML), JavaScript Object Notation (JSON), or in a binary format.

### Claim 15

A computer program product encoded in one or more non-transitory, machine readable media, wherein the computer program product comprises code executable by a server, the code comprising:
a first code executable to send information from a server indicating an operation of the state-based client-server application, wherein the UI is associated with the state-based client-server application;
a second code executable to provide data from the server to the client; and
a third code executable to provide input from the server to the UI of the client, wherein the input indicates at least one operation of the state-based client-server application, so that, after the client receives the input the client updates a display of the UI with data from a client-side cache, the data that corresponding to a new UI state that follows a current state based, at least in part, on the indicated operation, wherein the data supplied by the server to the client corresponds to the new state.

### Claim 16 (depends on 15)

The computer program product of claim 15, wherein the information supplied by the server includes data that corresponds to one or more subsequent states of the state-based client-server application for inclusion in the client-side cache, the one or more subsequent states indirectly following a current state of the state-based client-server application.

### Claim 17 (depends on 16)

The computer program product of claim 16, wherein the code further comprises:
a fourth executable to select the data that corresponds to the one or more subsequent states based upon at least one of frequency of past usage, location with respect to the new state, size of the state data and whether the subsequent state data would result in an incremental display update.

### Claim 18 (depends on 16)

The computer program product of claim 16, wherein the information provided by the server also includes the data that corresponds to the new state.

### Claim 19 (depends on 16)

The computer program product of claim 16, wherein the code further comprises:
a fifth executable to merge the data that corresponds to the one or more subsequent states into the client-side cache, such that it contains only possible future states.

### Claim 20 (depends on 15)

The computer program product of claim 15, wherein the new state data is utilized by the client to update the display without causing a complete refresh of the display.

### Claim 21 (depends on 15)

The computer program product of claim 15, wherein the display provides a representation of a current state of the application or a current state of a session in the application.

### Claim 22 (depends on 15)

The computer program product of claim 15, wherein the new state data is incremental state-difference data corresponding to a change between a current state and the new state.

### Claim 23 (depends on 15)

The computer program product of claim 15, wherein the code further comprises:
a fourth executable to provide the information from a server-side cache when the information is already stored therein, and wherein the server computes the information by processing inputs or provides the information from another store and stores the information in the server-side cache when the information is not already stored in the server-side cache.

### Claim 24 (depends on 23)

The computer program product of claim 23, wherein the client-side cache comprises a tree-structured hierarchical cache.

### Claim 25 (depends on 24)

The computer program product of claim 24, wherein the hierarchical cache is structured as a plurality of nodes interconnected by one or more edges, and wherein each of the nodes corresponds to one of a plurality of states of the application and the edges represent different possible operations from one of the nodes to another one of the nodes.

### Claim 26 (depends on 25)

The computer program product of claim 25, wherein the client-side cache maintains a pointer to a current node included within the plurality of nodes.

### Claim 27 (depends on 15)

The computer program product of claim 15, wherein the code further comprises:
a fourth executable to queue operations within a client-side operation queue when the client has not received a reply from a previous request; and
a fifth executable to provide one or more entries from the client-side operation queue in a single request to the server when the client has received a reply to the previous request.

### Claim 28 (depends on 15)

The computer program product of claim 15, wherein the new and subsequent state data is provided in extensible markup language (XML), JavaScript Object Notation (JSON), or in a binary format.
