IP Library Granted Patent US 11,641,389
Granted Patent B2
US 11,641,389 · App. 17/493,383 · Granted May 2, 2023

Proactive conditioned prefetching and origin flooding mitigation for content delivery

Inventors: Subramanian Varadarajan (Los Gatos, CA); Rosarin R. Antonyraj (Sunnyvale, CA)
Assignee: ZYCADA NETWORKS, INC.
H04L67/06G06F16/94G06F16/9574H04L67/02H04L67/141
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,641,389
App. No.
17/493,383
Granted
May 2, 2023
Kind
B2
Abstract

A method of delivering content comprises, at a node in a network, receiving a first request to access a first webpage from a client computer, and after establishing a session with the client computer, transmitting a second request to a server in the network. The method further comprises receiving a first file for rendering the first webpage, extracting one or more hyperlinks to one or more second webpages from the first file, prefetching one or more second files for rendering respective ones of the one or more second webpages, and storing the one or more second files in a session cache associated with the session. The method further comprises receiving a third request to access a third webpage from the client computer; retrieving a third file for rendering the third webpage from the session cache in response to determination that the one or more second files include the third file; and transmitting the third file to the client computer.

Claims (78)

1. A method of delivering content, comprising, at a node in a network:

receiving a first request to access a first webpage from a first client computer system coupled to the network;

establishing a first session with the first client computer system;

transmitting a second request to a first server in the network in response to receiving the first request;

receiving a first file for rendering the first webpage; transmitting the first file to the first client computer system;

extracting one or more hyperlinks to one or more second webpages from the first file;

prefetching one or more second files for rendering respective ones of the one or more second webpages;

storing the one or more second files in a first session cache associated with the first session;

receiving a third request to access a third webpage from the first client computer system;

determining if the one or more second files include a third file for rendering the third webpage;

retrieving the third file from the first session cache in response to determination that the one or more second files include the third file for rendering the third webpage;

transmitting the third file to the first client computer system;

detecting content specific to the first client computer system from the first file;

removing the content specific to the first client computer system from the first file to generate a first template file; and

storing the first template file in a public cache distinct from the first session cache;

wherein the first request includes a first IP address, the method further comprising:

receiving a fifth request to access a fifth webpage from a second client computer systems, the fifth request including the first IP address; extracting information about the second client computer system from the fifth request; retrieving the first template file from the public cache; inserting the information about the second client computer system into the first template file to generate a fifth file for rendering the fifth webpage; and transmitting the fifth file to the second client computer system.

2. The method of claim 1 , wherein establishing a first session with the first client computer system includes determining a session ID in the first request and associating the first session cache with the session ID.

3. The method of claim 2 , wherein the third request includes the session ID.

4. The method of claim 1 , wherein extracting the one or more hyperlinks includes determining a plurality of hyperlinks included in the first file, and selecting the one or more hyperlinks from the plurality of hyperlinks.

5. The method of claim 4 , wherein extracting the one or more hyperlinks further includes, for each hyperlink of the plurality of hyperlinks, determining a probability of receiving a subsequent request related to the first request from the first client computer system to access a webpage associated with the each hyperlink.

6. The method of claim 5 , wherein the one or more hyperlinks each has a respective probability that is higher than that of any of the rest of the plurality of hyperlinks.

7. The method of claim 4 , wherein determining the plurality of hyperlinks includes in the first file comprises parsing the first file.

8. The method of claim 4 , wherein determining the plurality of hyperlinks included in the first file comprises using a headless browser to render the first file.

9. The method of claim 4 , wherein determining the plurality of hyperlinks included in the first file comprises using a variant of a browser to render the first file.

10. The method of claim 4 , wherein determining the plurality of hyperlinks included in the first file comprises using JavaScript code to render the first file.

11. The method of claim 4 , wherein determining the plurality of hyperlinks included in the first file comprises injecting customer code into the first file.

12. The method of claim 1 , wherein prefetching one or more second files comprises, for each link of the one or more hyperlinks:

transmitting a fourth request to the first server for a respective file to render a webpage associated with the each link; and

receiving the respective file from the first server.

13. The method of claim 1 , further comprising:

in response to the determination that the one or more second files include the third file for rendering the third webpage, determining if the third file is stale;

in response to determination that the third file is stale, transmitting a request to the first server for a refreshed third file;

receiving the refreshed third file;

pushing the refreshed third file to the first client computer system subsequent to transmitting the third file to the first client computer system; and

updating the first session cache with the refreshed third file.

14. A system, comprising:

one or more processors;

memory; and

one or more programs, wherein the one or more programs are stored in the memory and configured to be executed by the one or more processors, the one or more programs including instructions for performing a method comprising:

receiving a first request to access a first webpage from a first client computer system coupled to the network;

establishing a first session with the first client computer system;

transmitting a second request to a first server in the network in response to receiving the first request;

receiving a first file for rendering the first webpage;

transmitting the first file to the first client computer system;

extracting one or more hyperlinks to one or more second webpages from the first file;

prefetching one or more second files for rendering respective ones of the one or more second webpages;

storing the one or more second files in a first session cache associated with the first session;

receiving a third request to access a third webpage from the first client computer system;

determining if the one or more second files include a third file for rendering the third webpage;

retrieving the third file from the first session cache in response to determination that the one or more second files include the third file for rendering the third webpage;

transmitting the third file to the first client computer system;

detecting content specific to the first client computer system from the first file;

removing the content specific to the first client computer system from the first file to generate a first template file; and

storing the first template file in a public cache distinct from the first session cache;

wherein the first request includes a first IP address, the method further comprising:

receiving a fifth request to access a fifth webpage from a second client computer systems, the fifth request including the first IP address; extracting information about the second client computer system from the fifth request; retrieving the first template file from the public cache; inserting the information about the second client computer system into the first template file to generate a fifth file for rendering the fifth webpage; and transmitting the fifth file to the second client computer system.

15. The system of claim 14 , wherein determining the plurality of hyperlinks included in the first file comprises parsing the first file.

16. The system of claim 14 , wherein determining the plurality of hyperlinks included in the first file comprises using a headless browser to render the first file.

17. The system of claim 14 , wherein determining the plurality of hyperlinks included in the first file comprises using a variant of a browser to render the first file.

18. A non-transitory computer readable storage medium storing one or more programs configured for execution by an electronic device with a display, the one or more programs comprising instructions for performing a method comprising:

receiving a first request to access a first webpage from a first client computer system coupled to the network;

establishing a first session with the first client computer system;

transmitting a second request to a first server in the network in response to receiving the first request;

receiving a first file for rendering the first webpage;

transmitting the first file to the first client computer system;

extracting one or more hyperlinks to one or more second webpages from the first file;

prefetching one or more second files for rendering respective ones of the one or more second webpages;

storing the one or more second files in a first session cache associated with the first session;

receiving a third request to access a third webpage from the first client computer system;

determining if the one or more second files include a third file for rendering the third webpage;

retrieving the third file from the first session cache in response to determination that the one or more second files include the third file for rendering the third webpage; and

transmitting the third file to the first client computer system;

detecting content specific to the first client computer system from the first file;

removing the content specific to the first client computer system from the first file to generate a first template file; and

storing the first template file in a public cache distinct from the first session cache;

wherein the first request includes a first IP address, the method further comprising:

receiving a fifth request to access a fifth webpage from a second client computer systems, the fifth request including the first IP address; extracting information about the second client computer system from the fifth request; retrieving the first template file from the public cache; inserting the information about the second client computer system into the first template file to generate a fifth file for rendering the fifth webpage; and transmitting the fifth file to the second client computer system.

Assignments (5)
NUNC PRO TUNC ASSIGNMENT Recorded Apr 11, 2024
From: SENTHIVEL, KUMARAVEL; NATARAJAN, BADRINATH
To: ZYCADA NETWORKS, INC.
Reel/Frame 067078/0312 →
CORRECTIVE ASSIGNMENT TO CORRECT THE THE LEGAL NAME OF THE FIRST INVENTOR PREVIOUSLY RECORDED AT REEL: 62802 FRAME: 964. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT. Recorded Apr 11, 2024
From: VARADARAJAN, SUBRAMANIAN; ANTONYRAJ, ROSARIN JOLLY ROY
To: ZYCADA NETWORKS, INC.
Reel/Frame 067097/0920 →
CORRECTIVE ASSIGNMENT TO CORRECT THE RECEIVING PARTY DATA PREVIOUSLY RECORDED ON REEL 063900 FRAME 0586. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT. Recorded Aug 14, 2023
From: ZYCADA NETWORKS, INC.
To: PALO ALTO NETWORKS, INC.
Reel/Frame 064585/0057 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 8, 2023
From: ZYCADA NETWORKS, INC.,
To: ZYCADA NETWORKS, INC.; PALO ALTO NETWORKS, INC.
Reel/Frame 063900/0586 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 24, 2023
From: VARADARAJAN, SUBRAMANIAN; ANTONYRAJ, ROSARIN R.
To: ZYCADA NETWORKS, INC.
Reel/Frame 062802/0964 →
Continuity (3)
Continuation 16902148 · Jun 15, 2020
Provisional Application 62861976 · Jun 14, 2019
Related Publication 20220239723A1 · Jul 28, 2022