IP Library Granted Patent US 9,876,873
Granted Patent B1
US 9,876,873 · App. 14/918,982 · Granted Jan 23, 2018

Caching techniques

Inventors: Charles Teague (Leesburg, VA); David Gang (Oakton, VA); Hyoo Lim (Herndon, VA); Jeremy Collins (Leesburg, VA)
Assignee: Perfect Sense, Inc.
H04L67/2842G06F17/30864G06F17/30896H04L43/0864H04L67/02
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,876,873
App. No.
14/918,982
Granted
Jan 23, 2018
Kind
B1
Abstract

In some implementations, caching techniques may be employed by a web server that receives various requests from remotely-located client devices, retrieves requested results from an on-site database server, and transmits the results back to the client devices. These caching techniques generally relate to caching retrieved results at the web server such that the web server may be able to directly provide client devices with results without having to retrieve them from the database server every time a request is received. Application of these techniques may improve response times and provide back-end bandwidth savings.

Claims (56)

1. A computer-implemented method comprising:

receiving, at a first time, a first request for an information associated with a particular web resource;

performing a process of responding to the first request that includes retrieving information associated with the particular web resource from one or more databases;

determining that the process of responding to the first request took longer to perform than a first threshold amount of time;

receiving a second request for the information associated with the particular web resource;

determining that the second request is received within a predetermined amount of time after the first time,

performing a process of responding to the second request that includes retrieving information associated with the particular web resource from one or more databases; and

caching information retrieved in the process of responding to the second request in response to (i) determining that the process of responding to the first request took longer to perform than the first threshold amount of time, and (ii) determining that the second request is received within a predetermined amount of time after the first time.

2. The computer-implemented method of claim 1 , wherein:

receiving the first request for information associated with the particular web resource comprises receiving a first HTTP GET request for information associated with the particular web resource; and

receiving the second request for information associated with the particular web resource comprises receiving a second HTTP GET request for information associated with the particular web resource.

3. The computer-implemented method of claim 2 , comprising:

determining that the first HTTP GET request corresponds to a particular cache key; and

in response to determining that the process of to the first HTTP GET request took longer to perform than the first threshold amount of time, indexing the particular cache key.

4. The computer-implemented method of claim 3 , wherein indexing the particular cache key comprises indexing the particular cache key for the predetermined amount of time.

5. The computer-implemented method of claim 3 , comprising:

in response to receiving the second HTTP GET request associated with the particular web resource, determining that (i) the second HTTP GET request corresponds to the particular cache key, and (ii) the particular cache key has been indexed; and

wherein caching information retrieved in the process of responding to the second HTTP GET request comprises caching information retrieved in the process of responding to the second HTTP GET request in response to determining that (i) the second HTTP GET request corresponds to the particular cache key, and (ii) the particular cache key is indexed.

6. The computer-implemented method of claim 3 , comprising:

normalizing one or more headers of the first HTTP GET request; and

wherein determining that the first HTTP GET request corresponds to the particular cache key comprises determining, based on the normalization of the one or more headers of the first HTTP GET request, that the first HTTP GET request corresponds to the particular cache key.

7. The computer-implemented method of claim 2 , wherein:

receiving the first HTTP GET request for information associated with the particular web resource comprises receiving the first HTTP GET request for a first set of information associated with the particular web resource; and

receiving the second HTTP GET request for information associated with the particular web resource comprises receiving the second HTTP GET request for a second set of information associated with the particular web resource that is different from the first set of information associated with the particular web resource.

8. The computer-implemented method of claim 7 , further comprising:

receiving a third HTTP GET request for information associated with the particular web resource; and

performing a process of responding to the third HTTP GET request that includes retrieving the cached information associated with the particular web resource.

9. The computer-implemented method of claim 7 , wherein:

receiving the second HTTP GET request for the second set of information associated with the particular web resource comprises receiving, from a client device, the second HTTP GET request for the second set of information associated with the particular web resource;

retrieving information associated with the particular web resource from one or more databases comprises retrieving the second set of information associated with the particular web resource from one or more databases; and

the computer-implemented method further comprises sending the second set of information associated with the particular web resource to the client device.

10. The computer-implemented method of claim 9 , wherein caching information retrieved in the process of responding to the second HTTP GET request comprises caching a downgraded version of the second set of information associated with the particular web resource.

11. The computer-implemented method of claim 1 , further comprising:

after caching information retrieved in the process of responding to the second request, determining that a rate at which requests for information associated with the particular web resource are being received satisfies one or more criteria; and

in response to determining that the rate at which requests for information associated with the particular web resource are being received satisfies the one or more criteria, performing another process that includes retrieving information associated with the particular web resource from one or more databases.

12. The computer-implemented method of claim 11 , further comprising:

determining whether the other process took longer to perform than the first threshold amount of time; and

in response to determining that the other process took longer to perform than the first threshold amount of time, replacing the cached information associated with the particular web resource with information retrieved in the other process.

13. The computer-implemented method of claim 11 , further comprising:

determining whether the other process took longer to perform than the first threshold amount of time; and

in response to determining that the other process did not take longer to perform than the first threshold amount of time, flushing the cached information associated with the particular web resource.

14. The computer-implemented method of claim 11 , further comprising:

after caching information retrieved in the process of responding to the second request, determining whether an age of the cached information associated with the particular web resource is (i) less than an upper threshold age, and (ii) greater than a lower threshold age; and

wherein determining that the rate at which requests for information associated with the particular web resource are being received satisfies one or more criteria comprises:

in response to determining that the age of the cached information associated with the particular web resource is (i) less than an upper threshold age, and (ii) greater than a lower threshold age, determining that the rate at which requests for information associated with the particular web resource are being received satisfies one or more criteria.

15. The computer-implemented method of claim 1 , further comprising:

after caching information retrieved in the process of responding to the second request, determining whether an age of the cached information associated with the particular web resource is less than an upper threshold age; and

in response to determining that the age of the cached information associated with the particular web resource is not less than an upper threshold age, flushing the cached information associated with the particular web resource.

16. A non-transitory computer-readable storage device having instructions stored thereon that, when executed by a computing device, cause the computing device to perform operations comprising:

receiving, at a first time, a first request for an information associated with a particular web resource;

performing a process of responding to the first request that includes retrieving information associated with the particular web resource from one or more databases;

determining that the process of responding to the first request took longer to perform than a first threshold amount of time;

receiving a second request for the information associated with the particular web resource;

determining that the second request is received within a predetermined amount of time after the first time,

performing a process of responding to the second request that includes retrieving information associated with the particular web resource from one or more databases; and

caching information retrieved in the process of responding to the second request in response to (i) determining that the process of responding to the first request took longer to perform than the first threshold amount of time, and (ii) determining that the second request is received within a predetermined amount of time after the first time.

Assignments (8)
RELEASE OF SECURITY INTEREST Recorded Nov 23, 2021
From: WESTERN ALLIANCE BANK
To: PERFECT SENSE, INC.
Reel/Frame 058193/0010 →
RELEASE OF SECURITY INTEREST Recorded Nov 18, 2021
From: WESTERN ALLIANCE BANK
To: PERFECT SENSE, INC.
Reel/Frame 058149/0913 →
SECURITY INTEREST Recorded Nov 18, 2021
From: PERFECT SENSE, INC.
To: AB PRIVATE CREDIT INVESTORS LLC
Reel/Frame 058150/0282 →
RELEASE OF SECURITY INTEREST Recorded Jun 25, 2019
From: SILICON VALLEY BANK
To: PERFECT SENSE, INC.
Reel/Frame 049577/0439 →
SECURITY INTEREST Recorded Jun 24, 2019
From: PERFECT SENSE, INC.
To: WESTERN ALLIANCE BANK
Reel/Frame 049571/0862 →
SECURITY INTEREST Recorded Feb 1, 2018
From: PERFECT SENSE, INC.
To: SILICON VALLEY BANK
Reel/Frame 044797/0147 →
MERGER Recorded Dec 7, 2016
From: PERFECT SENSE DIGITAL, LLC
To: PERFECT SENSE, INC.
Reel/Frame 040586/0073 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 24, 2015
From: TEAGUE, CHARLES; GANG, DAVID; LIM, HYOO; COLLINS, JEREMY
To: PERFECT SENSE DIGITAL LLC
Reel/Frame 037128/0832 →