IP Library Granted Patent US 9,998,521
Granted Patent B2
US 9,998,521 · App. 14/998,075 · Granted Jun 12, 2018

HTML streaming

Inventors: Hariharan Kolam (Palo Alto, CA); Sharad Jaiswal (Bangalore, IN); Mohammad H. Reshadi (Sunnyvale, CA)
Assignee: Instart Logic, Inc.
H04L67/02G06F17/30893G06F17/30902H04L65/105H04L65/605H04L65/80H04L67/2823H04L67/2842H04L67/2847H04L67/32H04L67/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 9,998,521
App. No.
14/998,075
Granted
Jun 12, 2018
Kind
B2
Abstract

A method of speeding up the delivery of a dynamic webpage is disclosed. A request for a webpage is received, the webpage including one or more dynamic components. A cached stub is sent in response to the request, the cached stub including common components of the webpage that were empirically determined to be common components across multiple requests for the webpage. The request for the webpage is forwarded to an origin server. The webpage is received from the origin server. A difference between the cached stub and the webpage received from the origin server is determined. An instruction to correct the difference between the cached stub and the webpage received from the origin server is sent.

Claims (75)

1. A method of speeding up the delivery of a dynamic webpage, comprising:

receiving a request for a webpage, the webpage including one or more dynamic components;

sending a cached stub in response to the request, the cached stub including common components of the webpage that were empirically determined to be common components across multiple requests for the webpage;

forwarding the request for the webpage to an origin server;

receiving the webpage from the origin server;

determining a difference between the cached stub and the webpage received from the origin server; and

sending an instruction to correct the difference between the cached stub and the webpage received from the origin server.

2. The method of claim 1 , wherein empirically determining the common components of the webpage comprises excluding user-specific information from the common components.

3. The method of claim 1 , further comprising:

excluding a first script component from being included in the cached stub, wherein the first script component was empirically determined to be common across multiple requests for the webpage, and wherein the first script component is preceded by a second script component that was empirically determined to be uncommon across multiple requests for the webpage.

4. The method of claim 1 , further comprising:

determining that the webpage received from the origin server includes a new component inserted in the webpage, wherein the new component was not included in the cached stub;

determining that inserting the new component in the cached stub would have resulted in the new component being inserted before at least one script component in the cached stub; and

configuring the instruction to cause a reloading of the webpage.

5. The method of claim 1 , further comprising:

determining that the webpage received from the origin server includes a new component inserted at a position in the webpage, wherein the new component was not included in the cached stub;

determining that inserting the new component in the cached stub would not have resulted in the new component being inserted before at least one script component in the cached stub; and

configuring the instruction to insert the new component into a DOM tree based on the position of the new component in the webpage.

6. The method of claim 1 , comprising:

determining that a component included in the cached stub has been deleted from the webpage received from the origin server;

determining that there is a script component in the cached stub following the deleted component; and

configuring the instruction to cause a reloading of the webpage.

7. The method of claim 1 , comprising:

determining that a component included in the cached stub has been deleted from the webpage received from the origin server;

determining that there is not a script component in the cached stub following the deleted component; and

configuring the instruction to delete the component from the DOM tree.

8. The method of claim 1 , wherein empirically determining the common components of the webpage comprises empirically determining common components of the webpage within a head section of the webpage.

9. The method of claim 1 , further comprising:

including a component in the cached stub, wherein the component was empirically determined to be similar but not identical across multiple requests for the webpage, wherein the component was empirically determined as having the same number and the same types of attributes across multiple requests for the webpage but having at least one attribute with a value that changes across multiple requests for the webpage; and

replacing the at least one attribute of the component included in the cached stub by a placeholder; and

activating a script that intercepts any access to the placeholder, wherein the script causes a reloading of the webpage in response to a determination that the placeholder has been accessed.

10. A system for speeding up the delivery of a dynamic webpage, comprising:

a processor configured to:

receive a request for a webpage, the webpage including one or more dynamic components;

send a cached stub in response to the request, the cached stub including common components of the webpage that were empirically determined to be common components across multiple requests for the webpage;

forward the request for the webpage to an origin server;

receive the webpage from the origin server;

determine a difference between the cached stub and the webpage received from the origin server; and

send an instruction to correct the difference between the cached stub and the webpage received from the origin server; and

a memory coupled to the processor and configured to provide the processor with instructions.

11. The system of claim 10 , wherein empirically determining the common components of the webpage comprises excluding user-specific information from the common components.

12. The system of claim 10 , wherein the processor is further configured to:

exclude a first script component from being included in the cached stub, wherein the first script component was empirically determined to be common across multiple requests for the webpage, and wherein the first script component is preceded by a second script component that was empirically determined to be uncommon across multiple requests for the webpage.

13. The system of claim 10 , wherein the processor is further configured to:

determine that the webpage received from the origin server includes a new component inserted in the webpage, wherein the new component was not included in the cached stub;

determine that inserting the new component in the cached stub would have resulted in the new component being inserted before at least one script component in the cached stub; and

configure the instruction to cause a reloading of the webpage.

14. The system of claim 10 , wherein the processor is further configured to:

determine that the webpage received from the origin server includes a new component inserted at a position in the webpage, wherein the new component was not included in the cached stub;

determine that inserting the new component in the cached stub would not have resulted in the new component being inserted before at least one script component in the cached stub; and

configure the instruction to insert the new component into a DOM tree based on the position of the new component in the webpage.

15. The system of claim 10 , wherein the processor is further configured to:

determine that a component included in the cached stub has been deleted from the webpage received from the origin server;

determine that there is a script component in the cached stub following the deleted component; and

configure the instruction to cause a reloading of the webpage.

16. The system of claim 10 , wherein the processor is further configured to:

determine that a component included in the cached stub has been deleted from the webpage received from the origin server;

determine that there is not a script component in the cached stub following the deleted component; and

configure the instruction to delete the component from the DOM tree.

17. The system of claim 10 , wherein empirically determining the common components of the webpage comprises empirically determining common components of the webpage within a head section of the webpage.

18. The system of claim 10 , wherein the processor is further configured to:

include a component in the cached stub, wherein the component was empirically determined to be similar but not identical across multiple requests for the webpage, wherein the component was empirically determined as having the same number and the same types of attributes across multiple requests for the webpage but having at least one attribute with a value that changes across multiple requests for the webpage; and

replace the at least one attribute of the component included in the cached stub by a placeholder; and

activate a script that intercepts any access to the placeholder, wherein the script causes a reloading of the webpage in response to a determination that the placeholder has been accessed.

19. A computer program product for speeding up the delivery of a dynamic webpage, the computer program product being embodied in a non-transitory computer readable storage medium and comprising computer instructions for:

receiving a request for a webpage, the webpage including one or more dynamic components;

sending a cached stub in response to the request, the cached stub including common Components of the webpage that were empirically determined to be common components across multiple requests for the webpage;

forwarding the request for the webpage to an origin server;

receiving the webpage from the origin server;

determining a difference between the cached stub and the webpage received from the origin server; and

sending an instruction to correct the difference between the cached stub and the webpage received from the origin server.

20. The computer program product recited in claim 19 , further comprising computer instructions for:

including a component in the cached stub, wherein the component was empirically determined to be similar but not identical across multiple requests for the webpage, wherein the component was empirically determined as having the same number and the same types of attributes across multiple requests for the webpage but having at least one attribute with a value that changes across multiple requests for the webpage; and

replacing the at least one attribute of the component included in the cached stub by a placeholder; and

activating a script that intercepts any access to the placeholder, wherein the script causes a reloading of the webpage in response to a determination that the placeholder has been accessed.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 20, 2020
From: INSTART LOGIC, INC.
To: AKAMAI TECHNOLOGIES, INC.
Reel/Frame 052175/0621 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 16, 2016
From: KOLAM, HARIHARAN; JAISWAL, SHARAD; RESHADI, MOHAMMAD H.
To: INSTART LOGIC, INC.
Reel/Frame 037996/0793 →
Continuity (2)
Provisional Application 62101134 · Jan 8, 2015
Related Publication 20160205166A1 · Jul 14, 2016