IP Library Granted Patent US 11,140,214
Granted Patent B2
US 11,140,214 · App. 16/902,148 · Granted Oct 5, 2021

Proactive conditioned prefetching and origin flooding mitigation for content delivery

Inventors: Subramanian Varadarajan (Los Gatos, CA); Rosarin R. Antonyraj (Sunnyvale, CA)
Assignee: ZYCADA NETWORKS
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,140,214
App. No.
16/902,148
Granted
Oct 5, 2021
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 (98)

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; and

transmitting the third file to the first client computer system,

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; and

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;

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.

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 determining the plurality of hyperlinks included in the first file comprises parsing the first file.

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

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

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

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

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

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

11. The method of claim 1 , further comprising:

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.

12. The method of claim 11 , 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.

13. 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, the first request including a first IP address;

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;

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

removing at least some of the content specific to the first client computer system from the first file to generate a first template file;

storing the first template file in a cache;

receiving a third request to access a second webpage from a second client computer system, the third request including the first IP address;

extracting information about the second client computer system from the third request;

retrieving the first template file from the cache;

inserting the information about the second client computer system into the first template the to generate a second file for rendering the second webpage; and

transmitting the second file to the second client computer system as a response to the third request.

14. A system in a network, 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:

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,

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; and

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;

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.

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. The system of claim 14 , wherein determining the plurality of hyperlinks included in the first file comprises using JavaScript code to render the first file.

19. The system of claim 14 , wherein determining the plurality of hyperlinks included in the first file comprises injecting customer code into the first file.

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

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,

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; and

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;

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.

Assignments (5)
NUNC PRO TUNC ASSIGNMENT Recorded Apr 9, 2024
From: SENTHIVEL, KUMARAVEL; NATARAJAN, BADRINATH
To: ZYCADA NETWORKS, INC.
Reel/Frame 067043/0792 →
CORRECTIVE ASSIGNMENT TO CORRECT THE 2ND INVENTOR NAME PREVIOUSLY RECORDED AT REEL: 62802 FRAME: 966. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT. Recorded Apr 3, 2024
From: VARADARAJAN, SUBRAMANIAN; ANTONYRAJ, ROSARIN JOLLY ROY
To: ZYCADA NETWORKS, INC.
Reel/Frame 066992/0468 →
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/0966 →
Continuity (2)
Provisional Application 62861976 · Jun 14, 2019
Related Publication 20210029192A1 · Jan 28, 2021