IP Library Granted Patent US 10,846,356
Granted Patent B2
US 10,846,356 · App. 16/006,951 · Granted Nov 24, 2020

Scalable whittled proxy execution for low-latency web over cellular networks

Inventors: Vijay Gopalakrishnan (Edison, NJ); Subhabrata Sen (Westfield, NJ); Shankaranarayanan Puzhavakath Narayanan (Hillsborough, NJ); Ashiwan Sivakumar (Pittsburgh, PA); Sanjay Rao (West Lafayette, IN); Mithuna Thottethodi (West Lafayette, IN); Terani Vijaykumar (West Lafayette, IN)
Assignees: AT&T Intellectual Property I, L.P.; Purdue Research Foundation
G06F16/9574G06F40/14G06F40/197
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,846,356
App. No.
16/006,951
Granted
Nov 24, 2020
Kind
B2
Abstract

A whittling proxy system can receive a target web page that includes a plurality of Javascript functions and a plurality of objects needed to load the target web page. The system can determine a target Javascript function of the plurality of Javascript functions to be tested for a whittling capability. The system can generate a full version and a partial version of the target web page. The full version includes all of the plurality of Javascript functions. The partial version includes the plurality of Javascript functions excluding the target Javascript function. The system can conduct a test to determine a first page signature associated with the full version and a second page signature associated with the partial version. The system can determine if the first page signature matches the second page signature, and if so, can determine that the target Javascript function can be whittled.

Claims (110)

1. A method comprising:

receiving, by a whittling proxy system comprising a processor, a target web page comprising a plurality of functions and a plurality of objects;

sorting, by the whittling proxy system, the plurality of functions in decreasing order of computational effort based upon an execution time of each function of the plurality of functions;

creating a sorted list of functions comprising the plurality of functions sorted in the decreasing order of computational effort;

starting a first iteration of whittling; and

during the first iteration of whittling,

generating, by the whittling proxy system, a first full version of the target web page, wherein the first full version of the target web page comprises the plurality of functions,

selecting, by the whittling proxy system, from the sorted list, a first target function from the plurality of functions to be tested to determine whether the first target function can be removed from the first full version of the target web page without affecting at least one of the plurality of objects when the target web page is executed, wherein the first target function is first in the sorted list of functions,

generating, by the whittling proxy system, a first partial version of the target web page, wherein the first partial version of the target web page comprises the first full version of the target web page with the first target function removed,

determining, by the whittling proxy system, a first signature associated with the first full version of the target web page, wherein the first signature identifies a first set of the plurality of objects that are fetched during execution of the first full version of the target web page,

determining, by the whittling proxy system, a second signature associated with the first partial version of the target web page, wherein the second signature identifies a second set of the plurality of objects that are fetched during execution of the first partial version of the target web page,

comparing, by the whittling proxy system, the first signature and the second signature to determine whether the first signature matches the second signature,

determining, by the whittling proxy system, that the first signature matches the second signature, and

in response to determining, by the whittling proxy system, that the first signature matches the second signature, determining that the first target function can be removed from the target web page without affecting at least one of the plurality of objects when the target web page is executed.

2. The method of claim 1 , further comprising:

starting a second iteration of whittling; and

during the second iteration of whittling,

generating, by the whittling proxy system, a second full version of the target web page, wherein the second full version of the target web page comprises the plurality of functions except the first target function,

selecting, by the whittling proxy system, from the sorted list, a second target function from the plurality of functions to be tested to determine whether the second target function also can be removed from the target web page without affecting at least one of the plurality of objects when the target web page is executed, wherein the second target function is second in the sorted list of functions,

generating, by the whittling proxy system, a second partial version of the target web page, wherein the second partial version of the target web page comprises the second full version of the target web page with the second target function removed,

determining, by the whittling proxy system, a third signature associated with the second full version of the target web page, wherein the third signature identifies a third set of the plurality of objects that are fetched during execution of the second full version of the target web page,

determining, by the whittling proxy system, a fourth signature associated with the second partial version of the target web page, wherein the fourth signature identifies a fourth set of the plurality of objects that are fetched during execution of the second partial version of the target web page,

comparing, by the whittling proxy system, the third signature to the fourth signature to determine whether the third signature matches the fourth signature, and

in response to determining that the third signature matches the fourth signature, determining that the second target function can be removed from the target web page without affecting at least one of the plurality of objects when the target web page is executed.

3. The method of claim 2 , further comprising determining if the second target function is last in the sorted list of functions.

4. The method of claim 3 , further comprising, in response to determining that the second target function is not last in the sorted list of functions:

starting a third iteration of whittling; and

during the third iteration of whittling,

generating, by the whittling proxy system, a third full version of the target web page, wherein the third full version of the target web page comprises the plurality of functions except the first target function and the second target function,

selecting, by the whittling proxy system, from the sorted list, a third target function from the plurality of functions to be tested to determine whether the third target function also can be removed from the target web page without affecting at least one of the plurality of objects when the target web page is executed, wherein the third target function is third in the sorted list of functions,

generating, by the whittling proxy system, a third partial version of the target web page, wherein the third partial version of the target web page comprises the third full version of the target web page with the third target function removed,

determining, by the whittling proxy system, a fifth signature associated with the third full version of the target web page, wherein the fifth signature identifies a fifth set of the plurality of objects that are fetched during execution of the third full version of the target web page,

determining, by the whittling proxy system, a sixth signature associated with the third partial version of the target web page, wherein the sixth signature identifies a sixth set of the plurality of objects that are fetched during execution of the third partial version of the target web page, and

comparing, by the whittling proxy system, the fifth signature to the sixth signature to determine whether the fifth signature matches the sixth signature.

5. The method of claim 4 , further comprising, in response to determining that the fifth signature matches the sixth signature, determining that the third target function can be removed from the target web page without affecting at least one of the plurality of objects when the target web page is executed.

6. The method of claim 4 , further comprising, in response to determining that the fifth signature does not match the sixth signature, determining that the third target function cannot be removed from the target web page without affecting at least one of the plurality of objects when the target web page is executed.

7. The method of claim 2 , further comprising, in response to determining that the second target function is last in the sorted list of functions, generating a final version for the target web page, wherein the final version of the target web page comprises the plurality of functions except the first target function and the second target function.

8. A non-transitory computer-readable storage medium having computer-executable instructions stored thereon that, when executed by a processor, cause the processor to perform operations comprising:

receiving a target web page comprising a plurality of functions and a plurality of objects;

sorting the plurality of functions in decreasing order of computational effort based upon an execution time of each function of the plurality of functions;

creating a sorted list of functions comprising the plurality of functions sorted in the decreasing order of computational effort;

starting a first iteration of whittling; and

during the first iteration of whittling,

generating a first full version of the target web page, wherein the first full version of the target web page comprises the plurality of functions,

selecting, from the sorted list, a first target function from the plurality of functions to be tested to determine whether the first target function can be removed from the first full version of the target web page without affecting at least one of the plurality of objects when the target web page is executed, wherein the first target function is first in the sorted list of functions,

generating a first partial version of the target web page, wherein the first partial version of the target web page comprises the first full version of the target web page with the first target function removed,

determining a first signature associated with the first full version of the target web page, wherein the first signature identifies a first set of the plurality of objects that are fetched during execution of the first full version of the target web page,

determining a second signature associated with the first partial version of the target web page, wherein the second signature identifies a second set of the plurality of objects that are fetched during execution of the first partial version of the target web page,

comparing the first signature and the second signature to determine whether the first signature matches the second signature, and

in response to determining that the first signature matches the second signature, determining that the first target function can be removed from the target web page without affecting at least one of the plurality of objects when the target web page is executed.

9. The non-transitory computer-readable storage medium of claim 8 , wherein the operations further comprises:

starting a second iteration of whittling; and

during the second iteration of whittling,

generating a second full version of the target web page, wherein the second full version of the target web page comprises the plurality of functions except the first target function,

selecting from the sorted list, a second target function from the plurality of functions to be tested to determine whether the second target function also can be removed from the target web page without affecting at least one of the plurality of objects when the target web page is executed, wherein the second target function is second in the sorted list of functions,

generating a second partial version of the target web page, wherein the second partial version of the target web page comprises the second full version of the target web page with the second target function removed,

determining a third signature associated with the second full version of the target web page, wherein the third signature identifies a third set of the plurality of objects that are fetched during execution of the second full version of the target web page,

determining a fourth signature associated with the second partial version of the target web page, wherein the fourth signature identifies a fourth set of the plurality of objects that are fetched during execution of the second partial version of the target web page,

comparing the third signature to the fourth signature to determine whether the third signature matches the fourth signature, and

in response to determining that the third signature matches the fourth signature, determining that the second target function can be removed from the target web page without affecting at least one of the plurality of objects when the target web page is executed.

10. The non-transitory computer-readable storage medium of claim 9 , wherein the operations further comprise determining if the second target function is last in the sorted list of functions.

11. The non-transitory computer-readable storage medium of claim 10 , wherein the operations further comprise, in response to determining that the second target function is not last in the sorted list of functions:

starting a third iteration of whittling; and

during the third iteration of whittling,

generating a third full version of the target web page, wherein the third full version of the target web page comprises the plurality of functions except the first target function and the second target function,

selecting from the sorted list, a third target function from the plurality of functions to be tested to determine whether the third target function also can be removed from the target web page without affecting at least one of the plurality of objects when the target web page is executed, wherein the third target function is third in the sorted list of functions,

generating a third partial version of the target web page, wherein the third partial version of the target web page comprises the third full version of the target web page with the third target function removed,

determining a fifth signature associated with the third full version of the target web page, wherein the fifth signature identifies a fifth set of the plurality of objects that are fetched during execution of the third full version of the target web page,

determining a sixth signature associated with the third partial version of the target web page, wherein the sixth signature identifies a sixth set of the plurality of objects that are fetched during execution of the third partial version of the target web page, and

comparing the fifth signature to the sixth signature to determine whether the fifth signature matches the sixth signature.

12. The non-transitory computer-readable storage medium of claim 11 , wherein the operations further comprise, in response to determining that the fifth signature matches the sixth signature, determining that the third target function can be removed from the target web page without affecting at least one of the plurality of objects when the target web page is executed.

13. The non-transitory computer-readable storage medium of claim 11 , wherein the operations further comprise, in response to determining that the fifth signature does not match the sixth signature, determining that the third target function cannot be removed from the target web page without affecting at least one of the plurality of objects when the target web page is executed.

14. The non-transitory computer-readable storage medium of claim 9 , wherein the operations further comprise, in response to determining that the second target function is last in the sorted list of functions, generating a final version for the target web page, wherein the final version of the target web page comprises the plurality of functions except the first target function and the second target function.

15. A whittling proxy system comprising:

a processor; and

memory comprising computer-executable instructions that, when executed by the processor, cause the processor to perform operations comprising

receiving a target web page comprising a plurality of functions and a plurality of objects,

sorting the plurality of functions in decreasing order of computational effort based upon an execution time of each function of the plurality of functions,

creating a sorted list of functions comprising the plurality of functions sorted in the decreasing order of computational effort,

starting a first iteration of whittling, and

during the first iteration of whittling,

generating a first full version of the target web page, wherein the first full version of the target web page comprises the plurality of functions,

selecting, from the sorted list, a first target function from the plurality of functions to be tested to determine whether the first target function can be removed from the first full version of the target web page without affecting at least one of the plurality of objects when the target web page is executed, wherein the first target function is first in the sorted list of functions,

generating a first partial version of the target web page, wherein the first partial version of the target web page comprises the first full version of the target web page with the first target function removed;

determining a first signature associated with the first full version of the target web page, wherein the first signature identifies a first set of the plurality of objects that are fetched during execution of the first full version of the target web page,

determining a second signature associated with the first partial version of the target web page, wherein the second signature identifies a second set of the plurality of objects that are fetched during execution of the first partial version of the target web page,

comparing the first signature and the second signature to determine whether the first signature matches the second signature,

in response to determining that the first signature matches the second signature, determining that the first target function can be removed from the target web page without affecting at least one of the plurality of objects when the target web page is executed,

starting a second iteration of whittling,

during the second iteration of whittling,

generating a second full version of the target web page, wherein the second full version of the target web page comprises the plurality of functions except the first target function,

selecting, from the sorted list, a second target function from the plurality of functions to be tested to determine whether the second target function also can be removed from the target web page without affecting at least one of the plurality of objects when the target web page is executed, wherein the second target function is second in the sorted list of functions,

generating a second partial version of the target web page, wherein the second partial version of the target web page comprises the second full version of the target web page with the second target function removed;

determining a third signature associated with the second full version of the target web page, wherein the third signature identifies a third set of the plurality of objects that are fetched during execution of the second full version of the target web page,

determining a fourth signature associated with the second partial version of the target web page, wherein the fourth signature identifies a fourth set of the plurality of objects that are fetched during execution of the second partial version of the target web page,

comparing the third signature to the fourth signature to determine whether the third signature matches the fourth signature, and

in response to determining that the third signature matches the fourth signature, determining that the second target function can be removed from the target web page without affecting at least one of the plurality of objects when the target web page is executed.

16. The whittling proxy system of claim 15 , wherein the operations further comprise determining if the second target function is last in the sorted list of functions.

17. The whittling proxy system of claim 16 , wherein the operations further comprise, in response to determining that the second target function is not last in the sorted list of functions:

starting a third iteration of whittling; and

during the third iteration of whittling,

generating a third full version of the target web page, wherein the third full version of the target web page comprises the plurality of functions except the first target function and the second target function,

selecting, from the sorted list, a third target function from the plurality of functions to be tested to determine whether the third target function also can be removed from the target web page without affecting at least one of the plurality of objects when the target web page is executed, wherein the third target function is third in the sorted list of functions,

generating a third partial version of the target web page, wherein the third partial version of the target web page comprises the third full version of the target web page with the third target function removed,

determining a fifth signature associated with the third full version of the target web page, wherein the fifth signature identifies a fifth set of the plurality of objects that are fetched during execution of the third full version of the target web page,

determining a sixth signature associated with the third partial version of the target web page, wherein the sixth signature identifies a sixth set of the plurality of objects that are fetched during execution of the third partial version of the target web page, and

comparing the fifth signature to the sixth signature to determine whether the fifth signature matches the sixth signature.

18. The whittling proxy system of claim 17 , wherein the operations further comprise, in response to determining that the fifth signature matches the sixth signature, determining that the third target function can be removed from the target web page without affecting at least one of the plurality of objects when the target web page is executed.

19. The whittling proxy system of claim 17 , wherein the operations further comprise, in response to determining that the fifth signature does not match the sixth signature, determining that the third target function cannot be removed from the target web page without affecting at least one of the plurality of objects when the target web page is executed.

20. The whittling proxy system of claim 16 , wherein the operations further comprise, in response to determining that the second target function is last in the sorted list of functions, generating a final version for the target web page, wherein the final version of the target web page comprises the plurality of functions except the first target function and the second target function.

Assignments (4)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 28, 2020
From: SIVAKUMAR, ASHIWAN
To: PURDUE RESEARCH FOUNDATION
Reel/Frame 054197/0838 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 30, 2020
From: VIJAYKUMAR, TERANI N.; THOTTETHODI, MITHUNA SHAMABHAT; RAO, SANJAY G.
To: PURDUE RESEARCH FOUNDATION
Reel/Frame 053928/0185 →
CONFIRMATORY LICENSE Recorded Oct 9, 2018
From: PURDUE UNIVERSITY
To: NATIONAL SCIENCE FOUNDATION
Reel/Frame 047850/0091 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 13, 2018
From: GOPALAKRISHNAN, VIJAY; NARAYANAN, SHANKARANARAYANAN PUZHAVAKATH; SEN, SUBHABRATA
To: AT&T INTELLECTUAL PROPERTY I, L.P.
Reel/Frame 046066/0828 →
Continuity (1)
Related Publication 20190384862A1 · Dec 19, 2019