IP Library › Granted Patent US 10,708,382
Granted Patent B2
US 10,708,382 · App. 16/184,295 · Granted Jul 7, 2020

Systems and methods for latency masking via prefix caching

Inventors: Abhishek Chauhan (Santa Clara, CA); Jeroen Mattijs van Rotterdam (Fort Lauderdale, FL)
Assignee: Citrix Systems, Inc.
H04L67/2847H04L65/1063H04L65/601H04L67/42
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,708,382
App. No.
16/184,295
Granted
Jul 7, 2020
Kind
B2
Abstract

Systems and methods for latency masking via prefix caching, by providing a recorded output of launch of a network application to a client device from a point closer to client device, or with lower latency than output of the actual network application can be provided to the client device. The resulting user experience is that of instant or near-instant launch of the application, avoiding network delays communicating with the application server or processing delays from instantiation of virtual machines or other resources to provide the network application.

Claims (58)

1. A method for delivery of an application via prefix caching, comprising:

receiving a request to initiate execution of a first application, by an application server executed by one or more servers from a client application of a first client device;

directing the client application to retrieve a video stream from a cache, by the application server responsive to receipt of the request, the first client device displaying the retrieved video stream, the video stream comprising a recording of visual output of the first application from instantiation of the first application to a time at which the first application is ready to receive user input;

initiating execution of the first application on behalf of the first client device while displaying the video stream, by the application server, responsive to receipt of the request; and

providing output of the executing first application, by the application server for display by the first client device upon the first application being ready to receive user input, the first client device replacing the display of the video stream with the output from the executing first application.

2. The method of claim 1 , wherein the video stream consists of one or more visual elements present during each execution of the first application.

3. The method of claim 2 , further comprising:

initiating execution of the first application, by the application server, for each of a plurality of client applications of a corresponding plurality of client devices;

identifying, by the application server, the one or more visual elements present during each execution of the first application for the plurality of client applications;

generating, by the application server, the video stream from the identified one or more visual elements; and

providing the generated video stream, by the application server, to the cache.

4. The method of claim 1 , further comprising:

determining a time period from initiation of execution of the first application until the first application is ready to receive user input; and

adjusting a playback speed of the video stream such that a duration of the video stream corresponds to the determined time period.

5. The method of claim 1 , wherein one or more visual elements present during each execution of the first application are presented during a first loading state of the first application.

6. The method of claim 5 , wherein providing the one or more visual elements of the executed first application for display comprises providing the one or more visual elements of the executed first application in a second state of the first application, subsequent to the first loading state, in which the first application is ready to receive user input.

7. The method of claim 1 , further comprising:

receiving user input, from the client application, during presentation of the video stream by the first client device;

storing the received user input during presentation of the video stream; and

providing the stored received user input to the executing first application once the first application is ready to receive user input.

8. The method of claim 1 , wherein the video stream has a first aspect ratio, and the executing first application has a second aspect ratio; and

wherein providing visual output of the executing first application for display upon completion of display of the video stream further comprises generating an animation comprising a transition of an end portion of the video stream at the first aspect ratio to the second aspect ratio, the animation displayed by the first client device between display of the generated video stream and display of visual elements of the executed first application.

9. The method of claim 1 , wherein the generated video stream comprises a sequence of pages of a web application.

10. The method of claim 1 , wherein the cache is provided by a network device in communication with the first client device and the one or more servers.

11. A system for delivery of an application via prefix caching, comprising:

an application server executed by one or more servers, in communication with a client application of a first client device, the application server configured to:

receive a request to initiate execution of a first application,

direct the client application to retrieve a video stream from a cache, responsive to receipt of the request, the first client device displaying the retrieved video stream, the video stream comprising a recording of visual output of the first application from instantiation of the first application to a time at which the first application is ready to receive user input,

initiate execution of the first application on behalf of the first client device while displaying the video stream, responsive to receipt of the request, and

provide output of the executing first application, for display by the first client device upon the first application being ready to receive user input, the first client device replacing the display of the video stream with the output from the executing first application.

12. The system of claim 11 , wherein the video stream consists of one or more visual elements present during each execution of the first application; and wherein the application server is further configured to:

initiate execution of the first application for each of a plurality of client applications of a corresponding plurality of client devices,

identify the one or more visual elements present during each execution of the first application for the plurality of client applications,

generate the video stream from the identified one or more visual elements, and

provide the generated video stream to the cache.

13. The system of claim 11 , wherein the application server is further configured to:

determine a time period from initiation of execution of the first application until the first application is ready to receive user input; and

adjust a playback speed of the video stream such that a duration of the video stream corresponds to the determined time period.

14. The system of claim 11 , wherein one or more visual elements present during each execution of the first application are presented during a first loading state of the first application; and wherein the application server is further configured to provide the one or more visual elements of the executed first application in a second state of the first application, subsequent to the first loading state, in which the first application is ready to receive user input.

15. The system of claim 11 , wherein the application server is further configured to:

receive user input, from the client application, during presentation of the video stream by the first client device;

store the received user input during presentation of the video stream; and

provide the stored received user input to the executing first application once the first application is ready to receive user input.

16. The system of claim 11 , wherein the video stream has a first aspect ratio, and the executing first application has a second aspect ratio; and wherein the application server is further configured to:

generate an animation comprising a transition of an end portion of the video stream at the first aspect ratio to the second aspect ratio, the animation displayed by the first client device between display of the generated video stream and display of visual elements of the executed first application.

17. The system of claim 11 , wherein the generated video stream comprises a sequence of pages of a web application.

18. The system of claim 11 , wherein the cache is provided by a network device in communication with the first client device and the one or more servers.

19. A method for delivery of an application via prefix caching, comprising:

requesting, by a client application of a client device from one or more servers, execution of a first network application;

receiving, by the client application from the one or more servers, an identification of a recorded video stream of instantiation of the first network application stored at a cache device, the one or more servers beginning execution of the first network application responsive to receipt of the request;

retrieving, by the client application from the cache device, the recorded video stream;

displaying, by the client device, the recorded video stream;

receiving live output of the first network application executing on the one or more servers, by the client application, transmitted responsive to the first network application being ready to receive user input; and

replacing, by the client device, display of the recorded video stream with the received live output of the first network application.

20. The method of claim 19 , further comprising:

recording, by the client application during display of the recorded video stream, one or more user interactions with the first network application displayed in the recorded video stream; and

transmitting the recorded one or more user interactions, by the client application to the one or more servers;

wherein the one or more servers provide the recorded one or more user interactions to the first network application once the first network application is ready to receive user interactions.

Assignments (9)
PATENT SECURITY AGREEMENT Recorded Aug 15, 2025
From: CLOUD SOFTWARE GROUP, INC.; CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 072488/0172 →
SECURITY INTEREST Recorded May 24, 2024
From: CLOUD SOFTWARE GROUP, INC. (F/K/A TIBCO SOFTWARE INC.); CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 067662/0568 →
PATENT SECURITY AGREEMENT Recorded Apr 14, 2023
From: CLOUD SOFTWARE GROUP, INC. (F/K/A TIBCO SOFTWARE INC.); CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 063340/0164 →
RELEASE AND REASSIGNMENT OF SECURITY INTEREST IN PATENT (REEL/FRAME 062113/0001) Recorded Apr 14, 2023
From: GOLDMAN SACHS BANK USA, AS COLLATERAL AGENT
To: CITRIX SYSTEMS, INC.; CLOUD SOFTWARE GROUP, INC. (F/K/A TIBCO SOFTWARE INC.)
Reel/Frame 063339/0525 →
PATENT SECURITY AGREEMENT Recorded Oct 7, 2022
From: TIBCO SOFTWARE INC.; CITRIX SYSTEMS, INC.
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 062112/0262 →
PATENT SECURITY AGREEMENT Recorded Oct 7, 2022
From: TIBCO SOFTWARE INC.; CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 062113/0470 →
SECOND LIEN PATENT SECURITY AGREEMENT Recorded Oct 7, 2022
From: TIBCO SOFTWARE INC.; CITRIX SYSTEMS, INC.
To: GOLDMAN SACHS BANK USA, AS COLLATERAL AGENT
Reel/Frame 062113/0001 →
SECURITY INTEREST Recorded Sep 30, 2022
From: CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION
Reel/Frame 062079/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 29, 2019
From: CHAUHAN, ABHISHEK; VAN ROTTERDAM, JEROEN MATTIJS
To: CITRIX SYSTEMS, INC.
Reel/Frame 048170/0885 →
Continuity (1)
Related Publication 20200153931A1 · May 14, 2020
Cited By (1)
US 12,238,101