IP Library Granted Patent US 9,407,727
Granted Patent B1
US 9,407,727 · App. 13/975,049 · Granted Aug 2, 2016

Optimizing communications using client-side reconstruction scripting

Inventors: Steven McCanne (Berkeley, CA); Michael J. Demmer (San Francisco, CA); Derek J. Watson (Alamo, CA); David Tze-Si Wu (San Francisco, CA)
Assignee: RIVERBED TECHNOLOGY, INC.
H04L67/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,407,727
App. No.
13/975,049
Filed
Aug 23, 2013
Granted
Aug 2, 2016
Kind
B1
Art Unit
2444
USPC
709/219
Abstract

Systems and techniques are described for optimizing communications between a client and a server. Specifically, in some embodiments, an executing script on a client can send a resource request to a server. In response, the server can send an optimized version of the resource back to the client. The client can then reconstruct the resource from the optimized version of the resource.

Claims (44)

1. A method, comprising:

sending a first request for a script to a first server;

receiving the script from the first server in response to the first request;

executing the script on a computer;

the executing script generating a second request to access a resource;

adding an optimization indicator to the second request, wherein the optimization indicator indicates an ability to handle resources that have been optimized, wherein said adding the optimization indicator comprises (1) invoking a library routine, (2) transparently intercepting the second request at the computer, or (3) transparently intercepting the second request at an intermediary device;

sending the second request to a second server;

receiving a response to the second request from the second server;

in response to determining that the response includes the resource, providing the resource to the executing script; and

in response to determining that the response includes a set of resource links, reconstructing the resource based on the set of resource links, and providing the reconstructed resource to the executing script.

2. The method of claim 1 , wherein each resource link in the set of resource links is a uniform resource locator (URL).

3. The method of claim 1 , wherein said reconstructing includes:

for each resource link in the set of resource links,

in response to determining that the resource identified by the resource link is available in a web browser cache on the computer, retrieving the resource identified by the resource link from the web browser cache, and

in response to determining that the resource identified by the resource link is not available in the web browser cache on the computer, sending a third request to a third server to retrieve the resource identified by the resource link.

4. The method of claim 1 , wherein each resource link in the set of resource links identifies a data segment in a set of data segments that was generated by performing data deduplication on the resource.

5. The method of claim 1 , wherein the first request is sent by a web browser executing on the computer.

6. The method of claim 1 , wherein the script is a JavaScript script.

7. The method of claim 1 , wherein the computer is a handheld computing device.

8. A method, comprising:

receiving a first request for a script from a computer;

sending the script to the computer;

receiving a second request from the computer to access a resource, wherein the second request is initiated by the script executing on the computer;

in response to determining that the second request includes an optimization indicator, wherein the optimization indicator indicates an ability to handle resources that have been optimized, and wherein the optimization indicator was added to the second request by (1) invoking a library routine, (2) transparently intercepting the second request at the computer, or (3) transparently intercepting the second request at an intermediary device,

determining a set of resource links, wherein each resource link in the set of resource links identifies a data segment in a set of data segments that was generated by performing data deduplication on the resource, and

sending at least the set of resource links to the computer; and

in response to determining that the second request does not include the optimization indicator, sending the resource to the computer.

9. The method of claim 8 , wherein each resource link in the set of resource links is a uniform resource locator (URL).

10. The method of claim 8 , wherein the script is a JavaScript script.

11. The method of claim 8 , wherein the computer is a handheld computing device.

12. A method, comprising:

a client computer sending a request to a server computer to access a resource;

the server computer receiving the request from the client computer to access a resource, wherein the request includes an optimization indicator that indicates an ability to handle resources that have been optimized;

the server computer obtaining a set of uniform resource locators (URLs), wherein each URL in the set of URLs identifies a data segment in a set of data segments that was generated by performing data deduplication on the resource;

the server computer sending at least the set of URLs to the client computer;

the client computer receiving at least a set of URLs, wherein each URL in the set of URLs identifies a data segment in a set of data segments that was generated by performing data deduplication on the resource; and

the client computer reconstructing the resource based on the set of URLs.

13. A method, comprising:

an intermediary device transparently intercepting a request from a client computer to a server computer to access a resource;

the intermediary device adding an optimization indicator to the request, wherein the optimization indicator indicates an ability to handle resources that have been optimized;

the intermediary device sending the request to the server computer to access the resource, wherein the request includes the optimization indicator;

the intermediary device receiving at least a set of uniform resource locators (URLs), wherein each URL in the set of URLs identifies a data segment in a set of data segments that was generated by performing data deduplication on the resource;

the intermediary device reconstructing the resource based on the set of URLs; and

the intermediary device sending the reconstructed resource to the client computer.

Assignments (19)
RELEASE OF SECURITY INTEREST Recorded Aug 11, 2023
From: ALTER DOMUS (US) LLC, AS COLLATERAL AGENT
To: RIVERBED TECHNOLOGY, INC.; ATERNITY LLC; RIVERBED HOLDINGS, INC.
Reel/Frame 064673/0739 →
CHANGE OF NAME Recorded Feb 18, 2022
From: RIVERBED TECHNOLOGY, INC.
To: RIVERBED TECHNOLOGY LLC
Reel/Frame 059232/0551 →
TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENTS Recorded Dec 27, 2021
From: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS U.S. COLLATERAL AGENT
To: RIVERBED TECHNOLOGY, INC.; ATERNITY LLC
Reel/Frame 058593/0169 →
TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENTS Recorded Dec 27, 2021
From: ALTER DOMUS (US) LLC, AS COLLATERAL AGENT
To: RIVERBED TECHNOLOGY, INC.; ATERNITY LLC
Reel/Frame 058593/0108 →
TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENTS Recorded Dec 27, 2021
From: MORGAN STANLEY SENIOR FUNDING, INC., AS COLLATERAL AGENT
To: RIVERBED TECHNOLOGY, INC.; ATERNITY LLC
Reel/Frame 058593/0046 →
SECURITY INTEREST Recorded Dec 10, 2021
From: RIVERBED TECHNOLOGY LLC (FORMERLY RIVERBED TECHNOLOGY, INC.); ATERNITY LLC
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS U.S. COLLATERAL AGENT
Reel/Frame 058486/0216 →
PATENT SECURITY AGREEMENT Recorded Oct 27, 2021
From: RIVERBED TECHNOLOGY, INC.; ATERNITY LLC
To: WILMINGTON TRUST, NATIONAL ASSOCIATION
Reel/Frame 057943/0386 →
PATENT SECURITY AGREEMENT SUPPLEMENT - FIRST LIEN Recorded Oct 14, 2021
From: RIVERBED HOLDINGS, INC.; RIVERBED TECHNOLOGY, INC.; ATERNITY LLC
To: MORGAN STANLEY SENIOR FUNDING, INC., AS COLLATERAL AGENT
Reel/Frame 057810/0502 →
PATENT SECURITY AGREEMENT SUPPLEMENT - SECOND LIEN Recorded Oct 14, 2021
From: RIVERBED HOLDINGS, INC.; RIVERBED TECHNOLOGY, INC.; ATERNITY LLC
To: ALTER DOMUS (US) LLC, AS COLLATERAL AGENT
Reel/Frame 057810/0559 →
RELEASE OF SECURITY INTEREST IN PATENTS RECORED AT REEL 056397, FRAME 0750 Recorded Oct 13, 2021
From: MACQUARIE CAPITAL FUNDING LLC
To: RIVERBED HOLDINGS, INC.; RIVERBED TECHNOLOGY, INC.; ATERNITY LLC
Reel/Frame 057983/0356 →
SECURITY INTEREST Recorded May 26, 2021
From: RIVERBED HOLDINGS, INC.; RIVERBED TECHNOLOGY, INC.; ATERNITY LLC
To: MACQUARIE CAPITAL FUNDING LLC
Reel/Frame 056397/0750 →
PATENT SECURITY AGREEMENT Recorded Mar 5, 2021
From: RIVERBED TECHNOLOGY, INC.
To: ALTER DOMUS (US) LLC, AS COLLATERAL AGENT
Reel/Frame 055514/0249 →
CORRECTIVE ASSIGNMENT TO CORRECT THE CONVEYING PARTY NAME PREVIOUSLY RECORDED ON REEL 035521 FRAME 0069. ASSIGNOR(S) HEREBY CONFIRMS THE RELEASE OF SECURITY INTEREST IN PATENTS. Recorded Jun 2, 2015
From: JPMORGAN CHASE BANK, N.A.
To: RIVERBED TECHNOLOGY, INC.
Reel/Frame 035807/0680 →
SECURITY INTEREST Recorded May 1, 2015
From: RIVERBED TECHNOLOGY, INC.
To: MORGAN STANLEY SENIOR FUNDING, INC., AS COLLATERAL AGENT
Reel/Frame 035561/0363 →
RELEASE OF SECURITY INTEREST IN PATENTS Recorded Apr 28, 2015
From: BARCLAYS BANK PLC
To: RIVERBED TECHNOLOGY, INC.
Reel/Frame 035521/0069 →
PATENT SECURITY AGREEMENT Recorded Dec 27, 2013
From: RIVERBED TECHNOLOGY, INC.
To: JPMORGAN CHASE BANK, N.A., AS ADMINISTRATIVE AGENT
Reel/Frame 032421/0162 →
RELEASE OF PATENT SECURITY INTEREST Recorded Dec 26, 2013
From: MORGAN STANLEY & CO. LLC, AS COLLATERAL AGENT
To: RIVERBED TECHNOLOGY, INC.
Reel/Frame 032113/0425 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 3, 2013
From: MCCANNE, STEVEN; DEMMER, MICHAEL; WATSON, DEREK J.; WU, DAVID TZE-SI
To: RIVERBED TECHNOLOGY, INC.
Reel/Frame 031337/0001 →
PATENT SECURITY AGREEMENT Recorded Sep 13, 2013
From: RIVERBED TECHNOLOGY, INC.
To: MORGAN STANLEY & CO. LLC
Reel/Frame 031216/0968 →
Continuity (2)
Continuation In Part 13249183 · Sep 29, 2011
Provisional Application 61502856 · Jun 29, 2011