IP Library Granted Patent US 11,032,394
Granted Patent B1
US 11,032,394 · App. 15/851,831 · Granted Jun 8, 2021

Caching techniques

Inventors: Charles Teague (Leesburg, VA); David Gang (Oakton, VA); Hyoo Lim (Herndon, VA); Jeremy Collins (Leesburg, VA)
Assignee: Perfect Sense, Inc.
H04L67/325G06F16/24552H04L67/2842
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,032,394
App. No.
15/851,831
Granted
Jun 8, 2021
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 (72)

1. A computer-implemented method comprising:

obtaining data indicating a list of candidates predetermined to be eligible for caching;

receiving a first request for an information associated with a web resource;

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

determining that a duration of time from receiving the first request to receiving the second request satisfies a first threshold amount of time;

determining that the information associated with the web source is not included in the list of candidates predetermined to be eligible for caching;

determining that an amount of time for retrieving the information associated with the web resource from one or more databases satisfies a second threshold amount of time; and

updating the list of candidates to include a candidate representing the information associated with the web source based on (i) determining that the duration of time from receiving the first request to receiving the second request satisfies the first threshold amount of time, and (ii) determining that the amount of time for retrieving the information associated with the web resource from the one or more databases satisfies the second threshold amount of time;

retrieving, from the one or more databases, the information associated with the web resource based on updating the list of candidates to include the candidate representing the information associated with the web source; and

caching the retrieved information at a server system.

2. The method of claim 1 , wherein determining that the amount of time for retrieving the information associated with the web resource from one or more databases satisfies the second threshold amount of time comprises determining that an amount of time from requesting the information from the one or more databases to receiving the information from the one or more databases is greater than the second threshold amount of time.

3. The method of claim 1 , wherein:

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

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

4. The method of claim 3 , further comprising:

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

caching the retrieved information at the server system comprises indexing the particular cache key in association with the cached information.

5. The method of claim 4 , wherein the particular cache key is indexed in associated with the cached information for the duration of time from receiving the first request to receiving the second request.

6. The method of claim 4 , further comprising:

in response to receiving the second HTTP GET request associated with the 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

providing a response to the second request, the response comprising the retrieved information that has been cached at the server system.

7. The computer-implemented method of claim 4 , further 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.

8. The method of claim 3 , wherein:

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

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

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

9. The method of claim 1 , wherein determining that the duration of time from receiving the first request to receiving the second request satisfies the first threshold amount of time comprises:

determining the duration of time as a time span extending from a first point in time at which the first request is received to a second point in time at which the second request is received; and

determining that a duration of the time span is greater than the first threshold amount of time.

10. A system comprising:

one or more computing devices; and

one or more storage devices storing instructions that are operable, when executed by the one or more computing devices, to cause the one or more computing devices to perform operations comprising:

obtaining data indicating a list of candidates predetermined to be eligible for caching;

receiving a first request for an information associated with a web resource;

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

determining that a duration of time from receiving the first request to receiving the second request satisfies a first threshold amount of time;

determining that the information associated with the web source is not included in the list of candidates predetermined to be eligible for caching;

determining that an amount of time for retrieving the information associated with the web resource from one or more databases satisfies a second threshold amount of time; and

updating the list of candidates to include a candidate representing the information associated with the web source based on (i) determining that the duration of time from receiving the first request to receiving the second request satisfies the first threshold amount of time, and (ii) determining that the amount of time for retrieving the information associated with the web resource from the one or more databases satisfies the second threshold amount of time;

retrieving, from the one or more databases, the information associated with the web resource based on updating the list of candidates to include the candidate representing the information associated with the web source; and

caching the retrieved information at a server system.

11. The system of claim 10 , wherein determining that the amount of time for retrieving the information associated with the web resource from one or more databases satisfies the second threshold amount of time comprises determining that an amount of time from requesting the information from the one or more databases to receiving the information from the one or more databases is greater than the second threshold amount of time.

12. The system of claim 10 , wherein:

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

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

13. The system of claim 12 , wherein the operations further comprise:

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

caching the retrieved information at the server system comprises indexing the particular cache key in association with the cached information.

14. The system of claim 13 , wherein the particular cache key is indexed in associated with the cached information for the duration of time from receiving the first request to receiving the second request.

15. The system of claim 13 , wherein the operations further comprise:

in response to receiving the second HTTP GET request associated with the 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

providing a response to the second request, the response comprising the retrieved information that has been cached at the server system.

16. A non-transitory computer-readable storage device storing instructions executable by one or more computers which, upon such execution, cause one or more computing devices to perform operations comprising:

obtaining data indicating a list of candidates predetermined to be eligible for caching;

receiving a first request for an information associated with a web resource;

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

determining that a duration of time from receiving the first request to receiving the second request satisfies a first threshold amount of time;

determining that the information associated with the web source is not included in the list of candidates predetermined to be eligible for caching;

determining that an amount of time for retrieving the information associated with the web resource from one or more databases satisfies a second threshold amount of time; and

updating the list of candidates to include a candidate representing the information associated with the web source based on (i) determining that the duration of time from receiving the first request to receiving the second request satisfies the first threshold amount of time, and (ii) determining that the amount of time for retrieving the information associated with the web resource from the one or more databases satisfies the second threshold amount of time;

retrieving, from the one or more databases, the information associated with the web resource based on updating the list of candidates to include the candidate representing the information associated with the web source; and

caching the retrieved information at a server system.

17. The non-transitory computer-readable storage device of claim 16 , wherein determining that the amount of time for retrieving the information associated with the web resource from one or more databases satisfies the second threshold amount of time comprises determining that an amount of time from requesting the information from the one or more databases to receiving the information from the one or more databases is greater than the second threshold amount of time.

18. The non-transitory computer-readable storage device of claim 16 , wherein:

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

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

19. The non-transitory computer-readable storage device of claim 18 , wherein the operations further comprise:

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

caching the retrieved information at the server system comprises indexing the particular cache key in association with the cached information.

20. The non-transitory computer-readable storage device of claim 19 , wherein the particular cache key is indexed in associated with the cached information for the duration of time from receiving the first request to receiving the second request.

Assignments (3)
SECURITY INTEREST Recorded Nov 18, 2021
From: PERFECT SENSE, INC.
To: AB PRIVATE CREDIT INVESTORS LLC
Reel/Frame 058150/0282 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 1, 2018
From: TEAGUE, CHARLES; GANG, DAVID; LIM, HYOO; COLLINS, JEREMY
To: PERFECT SENSE DIGITAL LLC
Reel/Frame 044795/0717 →
MERGER AND CHANGE OF NAME Recorded Feb 1, 2018
From: PERFECT SENSE DIGITAL, LLC; PERFECT SENSE, INC.
To: PERFECT SENSE, INC.
Reel/Frame 044795/0856 →
Continuity (1)
Continuation 14918982 · Oct 21, 2015