IP Library Granted Patent US 9,825,812
Granted Patent B2
US 9,825,812 · App. 14/327,187 · Granted Nov 21, 2017

Transparently intercepting and optimizing resource requests

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,825,812
App. No.
14/327,187
Granted
Nov 21, 2017
Kind
B2
Abstract

Systems and techniques for transparently intercepting and optimizing resource requests are described. Some embodiments can send a request to a server. In response to the request, the embodiments can receive a first script and at least a second script from the server, wherein the first script includes instructions for intercepting invocations to a set of functions, and wherein the second script includes at least one invocation to at least one function in the set of functions. The first script can then be executed, thereby causing subsequent invocations to each function in the set of functions to be intercepted by a corresponding resource optimization handler. Next, the second script can be executed. When the executing second script invokes a function in the set of functions, the invocation of the function can be intercepted, and a resource optimization handler corresponding to the function can be invoked instead of invoking the function.

Claims (44)

1. A method, comprising:

sending a request to a server, wherein the request is sent by software code executing on a computer, wherein the software code includes a browser and a set of functions for obtaining and presenting information, and wherein the set of functions can be invoked by scripts that are retrieved by the browser;

in response to the request, receiving a first script and at least a second script from the server, wherein the first script includes instructions for adding a proxy software layer to intercept invocations to the set of functions, wherein the second script includes at least one invocation to at least one function in the set of functions, and wherein the first script and at least the second script are received by the browser;

executing the first script on the computer, thereby adding the proxy software layer to intercept subsequent invocations to each function in the set of functions;

executing the second script on the computer;

when the executing second script invokes a function in the set of functions,

the proxy software layer intercepting said invocation of the function, and

the proxy software layer invoking a resource optimization handler corresponding to the function instead of invoking the function, wherein the second script invoked the function to retrieve a resource from a remote location;

wherein in response to determining that an optimized version of the resource is available, the invoked resource optimization handler retrieves the optimized version of the resource, generates a non-optimized version of the resource from the optimized version of the resource, and returns the non-optimized version of the resource to the script; and

wherein the invoked resource optimization handler determines that the optimized version of the resource is available by performing a lookup on a table using an identifier associated with the resource, wherein the table maps identifiers associated with resources to identifiers associated with optimized resources, wherein the invoked resource optimization handler determines that the optimized version of the resource is available if the lookup succeeds, and wherein the invoked resource optimization handler determines that the optimized version of the resource is not available if the lookup fails.

2. The method of claim 1 , wherein in response to determining that the resource is available in a local cache, the invoked resource optimization handler retrieves the resource from the local cache instead of retrieving the resource from the remote location.

3. The method of claim 2 , wherein prior to the second script invoking the function, the resource was pre-fetched and stored by another resource optimization handler in the local cache.

4. The method of claim 1 , wherein in response to determining that the resource is not available in a local cache, the invoked resource optimization handler retrieves the resource from the remote location.

5. The method of claim 1 , wherein in response to determining that the resource is not available in a local cache, the invoked resource optimization handler invokes the function, which, in turn, retrieves the resource from the remote location.

6. The method of claim 1 , wherein the optimized version of the resource is a de-duplicated version of the resource, and wherein the invoked resource optimization handler generates the non-optimized version of the resource by reconstructing the resource from the de-duplicated version of the resource.

7. The method of claim 1 , wherein the optimized resource is a compressed version of the resource, and wherein the invoked resource optimization handler generates the non-optimized version of the resource by decompressing the optimized resource.

8. The method of claim 1 , wherein the optimized resource is a concatenated version that was obtained by concatenating multiple resources, and wherein the invoked resource optimization handler generates the non-optimized version of the resource by de-concatenating the optimized resource.

9. The method of claim 1 , wherein each identifier associated with a resource or an optimized resource is a Uniform Resource Locator (URL).

10. A non-transitory computer-readable storage medium storing software code that, when executed by a computer, causes the computer to perform a method, the method comprising:

sending a request to a server, wherein the software code includes a browser and a set of functions for obtaining and presenting information, and wherein the set of functions can be invoked by scripts that are retrieved by the browser;

in response to the request, receiving a first script and at least a second script from the server, wherein the first script includes instructions for adding a proxy software layer to intercept invocations to the set of functions, wherein the second script includes at least one invocation to at least one function in the set of functions, and wherein the first script and at least the second script are received by the browser;

executing the first script on the computer, thereby adding the proxy software layer to intercept subsequent invocations to each function in the set of functions;

executing the second script; and

when the executing second script invokes a function in the set of functions,

the proxy software layer intercepting said invocation of the function, and

the proxy software layer invoking a resource optimization handler corresponding to the function instead of invoking the function, wherein the second script invoked the function to retrieve a resource from a remote location;

wherein in response to determining that an optimized version of the resource is available, the invoked resource optimization handler retrieves the optimized version of the resource, generates a non-optimized version of the resource from the optimized version of the resource, and returns the non-optimized version of the resource to the script; and

wherein the invoked resource optimization handler determines that the optimized version of the resource is available by performing a lookup on a table using an identifier associated with the resource, wherein the table maps identifiers associated with resources to identifiers associated with optimized resources, wherein the invoked resource optimization handler determines that the optimized version of the resource is available if the lookup succeeds, and wherein the invoked resource optimization handler determines that the optimized version of the resource is not available if the lookup fails, wherein each identifier associated with a resource or an optimized resource is a Uniform Resource Locator (URL).

11. The non-transitory computer-readable storage medium of claim 10 , wherein in response to determining that the resource is available in a local cache, the invoked resource optimization handler retrieves the resource from the local cache instead of retrieving the resource from a remote location; and

wherein in response to determining that the resource is not available in a local cache, the invoked resource optimization handler retrieves the resource from the remote location.

12. An apparatus, comprising:

a processor; and

a non-transitory computer-readable storage medium storing software code that, when executed by the processor, causes the apparatus to perform a method, the method comprising:

sending a request to a server, wherein the software code includes a browser and a set of functions for obtaining and presenting information, and wherein the set of functions can be invoked by scripts that are retrieved by the browser;

in response to the request, receiving a first script and at least a second script from the server, wherein the first script includes instructions for adding a proxy software layer on the apparatus to intercept invocations to the set of functions, and wherein the second script includes at least one invocation to at least one function in the set of functions, and wherein the first script and at least the second script are received by the browser;

executing the first script, thereby adding the proxy software layer to intercept subsequent invocations to each function in the set of functions;

executing the second script; and

when the executing second script invokes a function in the set of functions,

the proxy software layer intercepting said invocation of the function, and

the proxy software layer invoking a resource optimization handler corresponding to the function instead of invoking the function, wherein the second script invoked the function to retrieve a resource from a remote location;

wherein in response to determining that an optimized version of the resource is available, the invoked resource optimization handler retrieves the optimized version of the resource, generates a non-optimized version of the resource from the optimized version of the resource, and returns the non-optimized version of the resource to the script; and

wherein the invoked resource optimization handler determines that the optimized version of the resource is available by performing a lookup on a table using an identifier associated with the resource, wherein the table maps identifiers associated with resources to identifiers associated with optimized resources, wherein the invoked resource optimization handler determines that the optimized version of the resource is available if the lookup succeeds, and wherein the invoked resource optimization handler determines that the optimized version of the resource is not available if the lookup fails.

13. The apparatus of claim 12 , wherein in response to determining that the resource is available in a local cache, the invoked resource optimization handler retrieves the resource from the local cache instead of retrieving the resource from a remote location; and

wherein in response to determining that the resource is not available in a local cache, the invoked resource optimization handler retrieves the resource from the remote location.

Assignments (13)
CORRECTIVE ASSIGNMENT TO CORRECT THE PROPERTY 14633493 WHICH WAS ENTERED INCORRECTLY AS 14633793 PREVIOUSLY RECORDED ON REEL 71176 FRAME 315. ASSIGNOR(S) HEREBY CONFIRMS THE FIRST LIEN NEWCO SECURITY AGREEMENT. Recorded Nov 10, 2025
From: PULSE SECURE, LLC; IVANTI, INC.; IVANTI US LLC; IVANTI SECURITY HOLDINGS LLC
To: MORGAN STANLEY SENIOR FUNDING, INC., AS COLLATERAL AGENT
Reel/Frame 073818/0515 →
FIRST LIEN NEWCO SECURITY AGREEMENT Recorded May 5, 2025
From: PULSE SECURE, LLC; IVANTI, INC.; IVANTI US LLC; IVANTI SECURITY HOLDINGS LLC
To: MORGAN STANLEY SENIOR FUNDING, INC., AS COLLATERAL AGENT
Reel/Frame 071176/0315 →
SECURITY INTEREST Recorded May 3, 2025
From: PULSE SECURE LLC
To: ALTER DOMUS (US) LLC
Reel/Frame 071165/0027 →
NOTICE OF SUCCESSION OF AGENCY FOR SECURITY INTEREST AT REEL/FRAME 054665/0873 Recorded Apr 29, 2025
From: BANK OF AMERICA, N.A., AS RESIGNING AGENT
To: ALTER DOMUS (US) LLC, AS SUCCESSOR AGENT
Reel/Frame 071123/0386 →
SECURITY INTEREST Recorded Dec 9, 2020
From: CELLSEC, INC.; PULSE SECURE, LLC; INVANTI, INC.; MOBILEIRON, INC.; INVANTI US LLC
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 054665/0873 →
SECURITY INTEREST Recorded Dec 9, 2020
From: CELLSEC, INC.; PULSE SECURE, LLC; IVANTI, INC.; MOBILEIRON, INC.; IVANTI US LLC
To: MORGAN STANLEY SENIOR FUNDING, INC., AS COLLATERAL AGENT
Reel/Frame 054665/0062 →
RELEASE OF SECURITY INTEREST : RECORDED AT REEL/FRAME - 053638-0220 Recorded Dec 1, 2020
From: KKR LOAN ADMINISTRATION SERVICES LLC
To: PULSE SECURE, LLC
Reel/Frame 054559/0368 →
SECURITY INTEREST Recorded Aug 29, 2020
From: PULSE SECURE, LLC
To: KKR LOAN ADMINISTRATION SERVICES LLC, AS COLLATERAL AGENT
Reel/Frame 053638/0220 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 15, 2017
From: BROCADE COMMUNICATION SYSTEMS, INC.
To: PULSE SECURE, LLC
Reel/Frame 043604/0172 →
RELEASE OF SECURITY INTEREST Recorded May 19, 2015
From: MORGAN STANLEY SENIOR FUNDING, INC., AS COLLATERAL AGENT
To: RIVERBED TECHNOLOGY, INC.
Reel/Frame 035665/0161 →
SECURITY INTEREST Recorded May 1, 2015
From: RIVERBED TECHNOLOGY, INC.
To: MORGAN STANLEY SENIOR FUNDING, INC., AS COLLATERAL AGENT
Reel/Frame 035561/0363 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 30, 2015
From: RIVERBED TECHNOLOGY, INC.
To: BROCADE COMMUNICATIONS SYSTEMS, INC.
Reel/Frame 035542/0012 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 24, 2014
From: CONNER, GLENN C.; HARRIS, JEFFREY M.
To: RIVERBED TECHNOLOGY, INC.
Reel/Frame 033385/0832 →