IP Library Granted Patent US 11,256,663
Granted Patent B2
US 11,256,663 · App. 16/995,456 · Granted Feb 22, 2022

Caching with dynamic and selective compression of content

Inventor: Paul Rigor (Los Angeles, CA)
Assignee: Verizon Digital Media Services Inc.
G06F16/172H04L67/1097H04L67/2842H04L69/04
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,256,663
App. No.
16/995,456
Granted
Feb 22, 2022
Kind
B2
Abstract

Dynamic and selective compression for content caching is provided for improving content delivery over a digital network. The dynamic and selective compression increased server cache size for higher cache-hit ratios that offset delays associated with compressing and decompressing content. The dynamic compression involves switching between an available set of compression tools in order to compress different files with the compression tool that is optimal for that file. The selective compression involves selectively compressing the content or files with the optimal compression tool when at least a threshold amount of space savings is obtained in an acceptable amount of time. Thus, the caching server caches compressed copies of a first set of files compressed with a first compression tool, compressed copies of a second set of files compressed with a different second compression tool, and an uncompressed third set of files.

Claims (116)

1. A method comprising:

retrieving, at a particular server, a first file over a digital network from a remote server;

monitoring, at the particular server, a number of requests received for the first file over an interval;

caching, by the particular server, a compressed copy of the first file into memory of the particular server in response to the number of requests falling below a demand threshold;

replacing, by the particular server, the compressed copy in the memory with an uncompressed instance of the first file in response to the number of requests exceeding said demand threshold; and

increasing a number of cached files that are stored in the memory of the particular server by caching, in the memory, compressed copies of a first set of files, that receive a first amount of demand less than the demand threshold, and by caching, in the memory, uncompressed instances of a second set of files, that receive a second amount of demand greater than the demand threshold.

2. The method of claim 1 , wherein caching the compressed copy comprises:

selecting a particular compression tool for the first file from a plurality of compression tools; and

compressing the first file with the particular compression tool, wherein the particular compression tool produces a greater reduction in size of the first file than other compression tools of the plurality of compression tools.

3. The method of claim 2 , wherein selecting the particular compression tool comprises:

determining a type of the first file;

tracking different amounts of compression produced by each compression tool of the plurality of compression tools for files of different types; and

determining that the particular compression tool produces the greater reduction in size of the first file than the other compression tools of the plurality of compression tools based on said tracking and the type of the first file.

4. The method of claim 1 further comprising:

retrieving, at the particular server, a second file over the digital network;

identifying a number of different files requested from the particular server over a duration;

caching a compressed copy of the second file into the memory of the particular server in response to the number of different files exceeding a particular count; and

caching the second file into the memory of the particular server without compression in response to the number of different files not exceeding the particular count.

5. The method of claim 1 further comprising:

retrieving, at the particular server, a second file over the digital network;

identifying processor utilization at the particular server over a duration;

caching a compressed copy of the second file into the memory of the particular server in response to the processor utilization falling below a utilization threshold; and

replacing the compressed copy of the second file in the memory with an uncompressed instance of the second file in response to the processor utilization exceeding the utilization threshold.

6. The method of claim 1 further comprising:

determining a size of the first file;

wherein caching the compressed copy comprises:

determining an amount of storage space that is saved by compressing the first file;

determining an amount of time to compress the first file; and

compressing the first file based on the amount of the storage space that is saved and the amount of time to compress the first file being within acceptable thresholds; and

wherein replacing the compressed copy comprises:

storing the first file into the memory without compression in response to the number of requests falling below the demand threshold or the amount of the storage space that is saved and the amount of time to compress the first file not being within the acceptable thresholds.

7. The method of claim 1 , wherein caching the compressed copy comprises:

selecting a first compression from a plurality of different compressions based on a type of the first file; and

compressing the first file using the first compression.

8. The method of claim 7 further comprising:

retrieving, at the particular server, a second file over the digital network;

selecting a different second compression from the plurality of different compressions based on the second file being of a different type than the first file; and

caching, by the particular server, a copy of the second file, that is compressed using the second compression, into the memory.

9. The method of claim 8 , wherein the first compression provides a greater amount of data compression of the first file than the second compression, and wherein the second compression provides a greater amount of data compression of the second file than the first compression.

10. The method of claim 1 , wherein caching the compressed copy comprises:

generating the compressed copy of the first file with an identifier that identifies (i) an original name of the first file, (ii) an original file extension of the first file, and (iii) an identifier for a compression used to compress the first file.

11. The method of claim 1 further comprising:

receiving a request for the first file after caching the compressed copy;

identifying the compressed copy of the first file in the memory;

selecting a particular compression from a plurality of compressions based on an identifier associated with the compressed copy;

decompressing the compressed copy with the particular compression; and

serving the first file without compression after said decompressing.

12. The method of claim 1 further comprising:

serving the first file with a first amount of delay during a first part of the interval when the number of requests is below the demand threshold, wherein serving the first file with the first amount of delay comprises:

decompressing the compressed copy in response to a first request for the first file received during the first part of the interval; and

providing the first file after said decompressing; and

serving the first file with a lesser second amount delay during a second part of the interval when the number of requests surpass the demand threshold, wherein serving the first file with the second amount of delay comprises:

providing the uncompressed instance of the first file directly from the memory in response to a second request for the first file received during the second part of the interval.

13. The method of claim 1 further comprising:

replacing, by the particular server, the compressed copy in the memory with an uncompressed instance of the first file in response to one or more resources of the particular server falling below a resource threshold.

14. The method of claim 13 ,

wherein caching the compressed copy comprises determining that the one or more resources are available for file decompression in response to the one or more resources exceeding the resource threshold during a first time; and

wherein replacing the compressed copy comprises determining that the one or more resources are not available for file decompression in response to the one or more resources falling below the resource threshold.

15. The method of claim 1 , wherein caching the compressed copy comprises:

storing an uncompressed instance of a second file with the compressed copy of the first file in the memory in response to a number of requests received for the second file over the interval exceeding said demand threshold while the number of requests received for the first file over the interval falls below the demand threshold.

16. The method of claim 1 ,

wherein the first file is of a particular file type and has a first size;

wherein caching the compressed copy comprises:

selecting a particular compression based on the particular file type; and

compressing the first file with the particular compression based on the particular compression producing an estimated first size reduction for files of the particular file type having the first size;

the method further comprising:

retrieving a second file that is of the particular file type and has a different second size; and

caching an uncompressed instance of the second file in the memory based on the particular compression producing an estimated second size reduction for files of the particular file type having the second size, wherein the estimated second size reduction is less than the estimated first size reduction.

17. The method of claim 1 , wherein caching the compressed copy comprises:

determining an amount of time to compress the first file based on a benchmark of a particular compression that is selected for compressing the first file;

generating the compressed copy of the first file with the particular compression in response to determining that the amount of time is less than a time threshold; and

storing the uncompressed instance of the first file in response to determining that the amount of time is greater than the time threshold.

18. A device comprising:

a storage;

one or more processors configured to:

retrieve a first file over a digital network from a remote server;

monitor a number of requests received for the first file over an interval;

cache a compressed copy of the first file into the storage in response to the number of requests falling below a demand threshold;

replace the compressed copy in the storage with an uncompressed instance of the first file in response to the number of requests exceeding said demand threshold; and

increase a number of cached files that are stored in the storage by caching, in the storage, compressed copies of a first set of files, that receive a first amount of demand less than the demand threshold, and by caching, in the storage, uncompressed instances of a second set of files, that receive a second amount of demand greater than the demand threshold.

19. A method comprising:

retrieving, at a particular server, a first file over a digital network from a remote server;

monitoring, at the particular server, a number of requests received for the first file over an interval;

caching, by the particular server, a compressed copy of the first file into memory of the particular server in response to the number of requests falling below a demand threshold;

serving the first file with a first amount of delay at a first time when the number of requests is below the demand threshold, wherein serving the first file with the first amount of delay comprises:

decompressing the compressed copy in response to a first request for the first file received at the first time; and

providing the first file after said decompressing;

replacing, by the particular server, the compressed copy in the memory with an uncompressed instance of the first file in response to the number of requests exceeding the demand threshold; and

serving the first file with a lesser second amount delay at a second time when the number of requests exceed the demand threshold, wherein serving the first file with the second amount of delay comprises:

providing the uncompressed instance of the first file directly from the memory in response to a second request for the first file received at the second time.

20. A device comprising:

a storage;

one or more processors configured to:

retrieve a first file over a digital network from a remote server;

monitor a number of requests received for the first file over an interval;

cache a compressed copy of the first file into the storage in response to the number of requests falling below a demand threshold;

serve the first file with a first amount of delay at a first time when the number of requests is below the demand threshold, wherein serving the first file with the first amount of delay comprises:

decompressing the compressed copy in response to a first request for the first file received at the first time; and

providing the first file after said decompressing;

replace the compressed copy in the storage with an uncompressed instance of the first file in response to the number of requests exceeding the demand threshold; and

serve the first file with a lesser second amount delay at a second time when the number of requests exceed the demand threshold, wherein serving the first file with the second amount of delay comprises:

providing the uncompressed instance of the first file directly from the storage in response to a second request for the first file received at the second time.

21. A method comprising:

retrieving, at a particular server, a first file over a digital network from a remote server;

monitoring, at the particular server, a number of requests received for the first file over an interval;

caching, by the particular server, a compressed copy of the first file into memory of the particular server at a first time in response to the number of requests falling below a demand threshold at the first time and availability of one or more resources of the particular server used for file decompression exceeding a resource threshold at the first time;

replacing, by the particular server, the compressed copy in the memory with an uncompressed instance of the first file at a second time in response to the number of requests exceeding the demand threshold at the second time; and

replacing, by the particular server, the compressed copy in the memory with an uncompressed instance of the first file at the second time in response to the availability of the one or more resources falling below the resource threshold and not being available for file decompression at the second time.

22. A device comprising:

a storage;

one or more processors configured to:

retrieve a first file over a digital network from a remote server;

monitor a number of requests received for the first file over an interval;

cache a compressed copy of the first file into the storage at a first time in response to the number of requests falling below a demand threshold at the first time and availability of one or more resources of the particular server used for file decompression exceeding a resource threshold at the first time; and

replace the compressed copy in the storage with an uncompressed instance of the first file at a second time in response to the number of requests exceeding the demand threshold at the second time; and

replace the compressed copy in the memory with an uncompressed instance of the first file at the second time in response to the availability of the one or more resources falling below the resource threshold and not being available for file decompression at the second time.

Assignments (10)
RELEASE OF PATENT SECURITY AGREEMENT [RECORDED AT REEL/FRAME 065597/0406] Recorded Jul 9, 2025
From: U.S. BANK TRUST COMPANY, NATIONAL ASSOCIATION
To: UPLYNK, INC. (F/K/A EDGIO, INC.)
Reel/Frame 071875/0105 →
RELEASE OF PATENT SECURITY AGREEMENT [RECORDED AT REEL/FRAME 065597/0212] Recorded Jul 3, 2025
From: LYNROCK LAKE MASTER FUND LP
To: UPLYNK, INC. (F/K/A EDGIO, INC.); MOJO MERGER SUB, LLC
Reel/Frame 071817/0877 →
RELEASE OF PATENT SECURITY AGREEMENT [RECORDED AT REEL/FRAME 068763/0276] Recorded Jul 3, 2025
From: LYNROCK LAKE MASTER FUND LP
To: UPLYNK, INC. (F/K/A EDGIO, INC.); MOJO MERGER SUB, LLC
Reel/Frame 071818/0022 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 30, 2025
From: EDGIO, INC.
To: DRNC HOLDINGS, INC.
Reel/Frame 070071/0327 →
PATENT SECURITY AGREEMENT Recorded Aug 23, 2024
From: EDGIO, INC.; MOJO MERGER SUB, LLC
To: LYNROCK LAKE MASTER FUND LP [LYNROCK LAKE PARTNERS LLC, ITS GENERAL PARTNER]
Reel/Frame 068763/0276 →
PATENT SECURITY AGREEMENT Recorded Nov 15, 2023
From: EDGIO, INC.; MOJO MERGER SUB, LLC
To: LYNROCK LAKE MASTER FUND LP [LYNROCK LAKE PARTNERS LLC, ITS GENERAL PARTNER]
Reel/Frame 065597/0212 →
PATENT SECURITY AGREEMENT Recorded Nov 15, 2023
From: EDGIO, INC.; MOJO MERGER SUB, LLC
To: U.S. BANK TRUST COMPANY, NATIONAL ASSOCIATION
Reel/Frame 065597/0406 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 21, 2022
From: EDGECAST INC.
To: EDGIO, INC.
Reel/Frame 061738/0972 →
CHANGE OF NAME Recorded Mar 15, 2022
From: VERIZON DIGITAL MEDIA SERVICES INC.
To: EDGECAST INC.
Reel/Frame 059367/0990 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 17, 2020
From: RIGOR, PAUL
To: VERIZON DIGITAL MEDIA SERVICES INC.
Reel/Frame 053515/0481 →