IP Library › Granted Patent US 12,641,140
Granted Patent B1
US 12,641,140 · App. 18/617,612 · Granted May 26, 2026

Application state client-side cache for a state-based client-server application

Inventors: Jude Arvind Britto (Bangalore, IN); Rajasekhar Vinnakota (Hyderabad, IN); David Franke (Austin, TX); Douglas Stuart Gray (Austin, TX); Deepti Gupta (Pune, IN)
Assignee: Versata Development Group, Inc.
H04L67/01G06F3/0482G06F9/542H04L9/40H04L67/568H04L67/5681H04L69/329G06F2209/541G06F2209/545
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 12,641,140
App. No.
18/617,612
Granted
May 26, 2026
Kind
B1
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 (49)

1 . A system for updating a user interface (UI) for a client, the UI associated with a state-based client-server application, comprising:

means, including one or more processors, for requesting information from a server at least one operation of the state-based client-server application, wherein the UI is associated with the state-based client-server application; and

means, including one or more processors, for updating a display of the UI with data from a client-side cache based on input received via a user interface (UI) of a client, the input indicating at least one operation of the state-based client-server application and 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 that corresponds to the new UI state includes data previously supplied from a server.

2 . The system of claim 1 , further comprising:

means, including one or more processors, for receiving, at the client, the information supplied by the server, wherein the information includes data that corresponds to one or more subsequent UI states of the state-based client-server application for inclusion in the client-side cache, the one or more subsequent UI states indirectly following a current UI state of the state-based client-server application.

3 . The system of claim 2 , further comprising:

means, including one or more processors, for selecting the data that corresponds to the one or more subsequent UI states based upon at least one of frequency of past usage, location with respect to the new UI state, size of the UI state data and whether the subsequent UI state data would result in an incremental display update.

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

5 . The method system of claim 1 , further comprising:

means, including one or more processors, for merging the data that corresponds to the one or more subsequent UI states into the client-side cache, such that it contains only possible future states.

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

7 . 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.

8 . 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.

9 . The system of claim 1 , wherein the server provides 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.

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

11 . 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 UI states of the client-server application and the edges represent different possible operations from one of the nodes to another one of the nodes.

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

13 . The system of claim 1 , further comprising:

means, including one or more processors, for queuing operations within a client-side operation queue when the client has not received a reply from a previous request; and

means, including one or more processors, for providing plural entries from the client-side operation queue in a single request to the server once the client has received a reply to the previous request.

14 . The system of claim 1 , wherein the new and subsequent UI states are encoded as extensible markup language (XML), JavaScript Object Notation (JSON), or in a binary data format.

15 . The system of claim 1 , further comprising:

means, including one or more processors, for pre-computing and storing, at the server, a set of one or more data units that each correspond to a respective one of a plurality of successive UI states of the state-based client-server application that follow the current UI state of the state-based client server application; and

means, including one or more processors, for responding to a client request that indicates an operation, with at least a first data unit from the set of stored data units, wherein the responded-with first data unit corresponds to a state that follows the current UI state of the state-based client-server application subsequent to the indicated operation being performed,

wherein the pre-computing of the data unit is performed prior to the client request being received at the server.

16 . The system of claim 1 , wherein requesting information from the server further comprises:

means, including one or more processors, for prefetching, at the client, the information requested from the server before an input associated with the information has been received via the UI of the client.

17 . The system of claim 1 , wherein requesting information from the server further comprises:

means, including one or more processors, for requesting information from the server based on input received via the UI of the client, the input indicating at least one operation of the state-based client-server application.

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

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

20 . The system of claim 16 , wherein receiving the request for information from the client further comprises:

means, including one or more processors, for receiving prefetched information requested by the client from the server before an input associated with the information has been received via the UI of the client.

21 . The system of claim 16 , wherein receiving the request for information from the client further comprises:

means, including one or more processors, for receiving information from the server requested by the client based on input received via the UI of the client, the input indicating at least one operation of the state-based client-server application.

22 . The system of claim 16 wherein the data provided to update the client-side cache includes data that corresponds to one or more subsequent UI states of the state-based client-server application for inclusion in the client-side cache, the one or more subsequent UI states indirectly following a current UI state of the state-based client-server application.

23 . The system of claim 22 , further comprising:

means, including one or more processors, for selecting the data that corresponds to the one or more subsequent UI states based upon at least one of frequency of past usage, location with respect to the new UI state, size of the UI state data and whether the subsequent UI state data would result in an incremental display update.

24 . The system of claim 16 , wherein the server provides 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.

25 . The system of claim 16 , 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 UI states of the client-server application and the edges represent different possible operations from one of the nodes to another one of the nodes.

26 . The system of claim 16 , further comprising:

means, including one or more processors, for receiving plural entries from a client-side operation queue in a single request to the server once the client has received a reply to the previous request, wherein the queue includes operations within a client-side operation queue when the client has not received a reply from a previous request.

27 . The system of claim 16 , further comprising:

means, including one or more processors, for pre-computing and storing, at the server, a set of one or more data units that each correspond to a respective one of a plurality of successive UI states of the state-based client-server application that follow the current UI state of the state-based client server application; and

means, including one or more processors, for responding to a client request that indicates an operation, with at least a first data unit from the set of stored data units, wherein the responded-with first data unit corresponds to a state that follows the current UI state of the state-based client-server application subsequent to the indicated operation being performed,

wherein the pre-computing of the data unit is performed prior to the client request being received at the server.

28 . A system for providing from a server data to update a user interface (UI) for a client, the UI associated with a state-based client-server application executing on the client, comprising:

means, including one or more processors, for receiving a request for information from a client indicating at least one operation of the state-based client-server application, wherein the UI for the client is associated with the state-based client-server application; and

means, including one or more processors, for providing data to update a client-side cache with data to update a display of the UI based on input via the UI, the input indicating at least one operation of the state-based client-server application executing on the client and 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 that corresponds to the new UI state includes data provided from the server to update the client-side cache.

Continuity (6)
Continuation 17401630 · Aug 13, 2021
Continuation 16518151 · Jul 22, 2019
Continuation 15700338 · Sep 11, 2017
Continuation 15174543 · Jun 6, 2016
Continuation 11691328 · Mar 26, 2007
Provisional Application 60744388 · Apr 6, 2006
References Cited (19)
US 6175864B1 · Addison · 2001 [cited by examiner]
US 6742059B1 · Todd · 2004 [cited by examiner]
US 7958457B1 · Brandenberg · 2011 [cited by examiner]
US 9385914B1 · Britto · 2016 [cited by examiner]
US 9787794B1 · Britto · 2017 [cited by examiner]
US 10560545B1 · Britto · 2020 [cited by examiner]
US 11122140B1 · Britto · 2021 [cited by examiner]
US 11962667B1 · Britto · 2024 [cited by examiner]
US 20010047393A1 · Arner · 2001 [cited by examiner]
US 20020065932A1 · Kobayashi · 2002 [cited by examiner]
US 20020111995A1 · Mansour · 2002 [cited by examiner]
US 20020161908A1 · Benitez · 2002 [cited by examiner]
US 20030051009A1 · Shah · 2003 [cited by examiner]
CN 1272189A · 2000 [cited by examiner]
Notice of Allowance mailed Dec. 18, 2023, filed in U.S. Appl. No. 17/401,630, pp. 1-4. [cited by applicant]
Terminal Disclaimer approved Feb. 23, 2023, filed in U.S. Appl. No. 17/401,630, p. 1. [cited by applicant]
Terminal Disclaimer filed Feb. 23, 2023, filed in U.S. Appl. No. 17/401,630, pp. 1-3. [cited by applicant]
Response to Non-Final Office Action dated Feb. 23, 2023, filed in U.S. Appl. No. 17/401,630, pp. 1-11. [cited by applicant]
Non-Final Office Action maiiled Sep. 23, 2022, filed in U.S. Appl. No. 17/401,630, pp. 1-30. [cited by applicant]