# US 10,320,941 B2 · Server-side caching for web user interfaces

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

- Number: US 10,320,941 B2
- Document ID: US10320941B2
- Status: Granted
- Kind: B2
- Application number: 15/220,522
- Filed: 2016-07-27
- Published: 2017-02-02
- Granted: 2019-06-11
- Earliest claimed: 2015-07-30
- Assignees: Nasdaq, Inc.
- Applicants: Nasdaq, Inc.
- Inventors: Santhosh Philip George
- Web page: https://patentgrep.com/patent/US10320941B2

## CPC

- H04L 67/568: Storing data temporarily at an intermediate stage, e.g. caching
- H04L 67/02: based on web technology, e.g. hypertext transfer protocol [HTTP]
- H04L 67/10: in which an application is distributed across nodes in the network (software deployment G06F8/60; multiprogramming arrangements G06F9/46)
- H04L 67/60: Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources (admission control or resource allocation H04L47/70)
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)

## Abstract

The described technology relates to rendering a client-side user interface, such as, for example, display of a web page, using a server-side cache for providing the displayed data. In an example implementation, in response to a user interface (e.g., dashboard with multiple widgets in a web application) being launched on the client device, the server initiates a refresh of the cache for the plurality of widgets; and transmits a first set of data obtained from the cache for widgets in the user interface before the cache is updated in response to the initiated refresh. The first set of data is followed by a second set of data obtained from the cache for at least some of the widgets after the cache is updated in response to the initiated refresh.

## Claims

### Claim 1

A system comprising:
a server device including a first processing system having at least one processor and a memory including a cache, the first processing system being configured to perform operations comprising:
configuring the cache to store, for each of a plurality of users, data for a plurality of widgets that are displayable on a user interface provided by a web application;
responsive to the user interface being launched on a client device, initiating a refresh of the cache for one or more of the plurality of widgets; and
transmitting, to the client device, a first set of data obtained from the cache for one or more of the widgets before the cache is updated in response to the initiated refresh, followed by a second set of data obtained from the cache for at least some of the one or more widgets after the cache is updated in response to the initiated refresh; and
the client device including a second processing system having at least one processor, a display device and a network communication interface configured for communication with the server device, the second processing system being configured to perform operations comprising:
receiving a request to display the user interface provided by the web application, the user interface being configured to have the plurality of widgets arranged thereon;
receiving, in response to a first data request transmitted to the server device after receiving the request to display the user interface, the first set of data;
receiving, in response to a second data request transmitted to the server device after the first data request, the second set of data; and
displaying the user interface on the display device using the second set of data, wherein the displaying includes overwriting, for one or more of the widgets, information previously displayed using the first set of data.

### Claim 2 (depends on 1)

The system according to claim 1, wherein the client device is configured to perform further operations comprising repeatedly transmitting data requests for at least one of the widgets for which last returned data is from the cache before the cache is updated for the at least one widget.

### Claim 3 (depends on 2)

The system according to claim 2, wherein initiating the refresh of the cache comprises asynchronously performing the refresh.

### Claim 4 (depends on 2)

The system according to claim 2, wherein the server device is configured to perform further operations:
in response to receiving a data request from the client device, determining whether a number of repeated data requests exceeds a configured threshold;
when the repeated data requests exceeds the threshold, directly access a data source to obtain data; and
return the obtained data to the client device.

### Claim 5 (depends on 1)

The system according to claim 1, wherein the user interface includes a dashboard having the plurality of widgets arranged thereon.

### Claim 6 (depends on 1)

The system according to claim 1,
wherein the client device is configured to transmit each data request with an included indication of a retry number, and
wherein the server device is configured to perform different actions for respective values of the retry numbers associated with each data request.

### Claim 7 (depends on 6)

The system according to claim 6, wherein the server device is configured to perform further operations:
when initiating the refresh, setting at least one flag indicating a status of data for a widget in the cache;
in response to receiving a data request having a retry number corresponding to a predetermined retry number, (1) if the at least one flag is not set, initiate the refresh of the cache and set the at least one flag; and (2) if the at least one flag is set, return data from the cache to the client device.

### Claim 8 (depends on 6)

The system according to claim 6, wherein the server device is further configured to initiate an asynchronous refresh of the cache in response to receiving a data request with a first retry number, and to initiate a synchronous update of the cache in response to receiving a data request with a second retry number, the first and second retry numbers being different.

### Claim 9 (depends on 1)

The system according to claim 1, wherein the client device is configured to perform further operations comprising:
monitoring cache expiration times for the plurality of widgets arranged on the user interface;
based upon the monitoring, determining an expiration of cached data for a first one of the widgets; and
causing a refresh of data in the cache for the first one of the widgets.

### Claim 10 (depends on 1)

The system according to claim 1, wherein the first processing system is configured to perform further operations:
storing a respective update timer for each of the plurality of widgets;
monitoring the update timers; and
when an update of a widget comes due, requesting an update.

### Claim 11

A server device comprising:
a memory configured for a cache;
a processing system having at least one processor, the processing system being configured to perform operations comprising:
configuring the cache to store, for each of a plurality of users, data for a plurality of widgets that are displayable on a user interface provided by a web application;
responsive to the user interface being launched on a client device, initiating a refresh of the cache for one or more of the plurality of widgets; and
transmitting, to the client device, a first set of data obtained from the cache for one or more of the widgets before the cache is updated in response to the initiated refresh, followed by a second set of data obtained from the cache for at least some of the one or more widgets after the cache is updated in response to the initiated refresh.

### Claim 12

A client device comprising:
a display device;
a network communication interface configured to communicate with a server device; and
a processing system having at least one processor, the processing system being configured to perform operations comprising:
receiving a request to display a user interface of a web application, the user interface being configured to have a plurality of widgets arranged thereon;
receiving, in response to a first data request transmitted to the server device after receiving the request to display the user interface, a first set of data;
receiving, in response to a second data request transmitted to the server device after the first data request, a second set of data; and
displaying the user interface on the display device using the second set of data, wherein the displaying includes overwriting, for one or more of the widgets, information previously displayed using the first set of data,
herein the first set of data is obtained from a cache for one or more of the widgets before the cache is updated by a refresh of the cache initiated in response to the user interface being launched on the client device, and wherein the second set of data is obtained from the cache after the cache is updated by the initiated refresh.

### Claim 13

A method comprising:
configuring a cache to store in a memory of a computer, for each of a plurality of users, data for a plurality of widgets that are displayable on a user interface provided by a web application;
responsive to the user interface being launched on a client device, initiating a refresh of the cache for one or more of the plurality of widgets; and
transmitting, to the client device, a first set of data obtained from the cache for one or more of the widgets before the cache is updated in response to the initiated refresh, followed by a second set of data obtained from the cache for at least some of the one or more widgets after the cache is updated in response to the initiated refresh.

### Claim 14

A non-transitory computer readable storage medium storing instructions of a web application, which, when executed by a computer, causes the computer to perform operations comprising:
configuring a cache in a memory of the computer to store, for each of a plurality of users, data for a plurality of widgets that are displayable on a user interface provided by the web application;
responsive to the user interface being launched on a client device, initiating a refresh of the cache for one or more of the plurality of widgets; and
transmitting, to the client device, a first set of data obtained from the cache for one or more of the widgets before the cache is updated in response to the initiated refresh, followed by a second set of data obtained from the cache for at least some of the one or more widgets after the cache is updated in response to the initiated refresh.

### Claim 15

A non-transitory computer readable storage medium storing instructions of a web application which, when executed by a computer, causes the computer to perform operations comprising:
receiving a request to display a user interface of the web application, the user interface being configured to have a plurality of widgets arranged thereon;
receiving, in response to a first data request transmitted to a server device after receiving the request to display the user interface, a first set of data;
receiving, in response to a second data request transmitted to the server device after the first data request, a second set of data; and
displaying the user interface on a display device using the second set of data, wherein the displaying includes overwriting, for one or more of the widgets, information previously displayed using the first set of data,
wherein the first set of data is obtained from a cache before the cache is updated for one or more of the widgets by a refresh of the cache initiated in response to the user interface being launched on a client device, and wherein the second set of data is obtained from the cache after the cache is updated by the initiated refresh.
