IP Library Granted Patent US 12,375,579
Granted Patent B1
US 12,375,579 · App. 17/341,053 · Granted Jul 29, 2025

Caching techniques

Inventors: Charles Teague (Leesburg, VA); David Gang (Oakton, VA); Hyoo Lim (Herndon, VA); Jeremy Collins (Leesburg, VA)
Assignee: Perfect Sense, Inc.
H04L67/568G06F16/24552G06F16/951G06F16/986H04L43/0864H04L67/02H04L67/62
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 12,375,579
App. No.
17/341,053
Granted
Jul 29, 2025
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 (64)

1. A computer-implemented method comprising:

identifying a set of candidates that are eligible for caching, wherein the set of candidates includes recently timed out requests for information associated with the set of candidates, and wherein the set of candidates includes two or more cache keys, two or more search queries, or two or more HTTP GET requests;

receiving a first request associated with a web resource;

receiving a second request associated with the web resource;

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

in response to determining that the second request is received within the predetermined amount of time:

determining that an amount of time for retrieving information responsive to the second request exceeds a second predetermined amount of time,

determining that the second request has timed out based on determining that the amount of time for retrieving the information responsive to the second request exceeds the second predetermined amount of time,

in response to determining that the second request has timed out, determining to update the set of candidates, and

in response to determining to update the set of candidates, updating the set of candidates that are eligible for caching to include a new candidate that represents the information responsive to the second request, the new candidate comprises a particular HTTP GET request represented by the second request;

in response to updating the set of candidates that are eligible for caching to include the new candidate, retrieving the information responsive to the particular HTTP GET request; and

caching the information responsive to the particular HTTP GET request at a server system.

2. The method of claim 1 , wherein:

the first request represents a first HTTP GET request associated with the web resource; and

the first HTTP GET request is different from the particular HTTP GET request represented by the second request.

3. The method of claim 2 , further comprising:

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

caching the information responsive to the particular HTTP GET request at the server system comprises indexing the particular cache key in association with the information responsive to the particular HTTP GET request.

4. The method of claim 3 , wherein the particular cache key is indexed in association with the information responsive to the particular HTTP GET request that has been cached at the server system for a duration of time from receiving the first request to receiving the second request.

5. The method of claim 3 , further comprising:

in response to receiving the second request, determining that (i) the particular 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 information responsive to the particular HTTP GET request that has been cached at the server system.

6. A system comprising:

one or more computing devices; and

one or more non-transitory computer-readable storage devices storing instructions executable by the one or more computing devices to cause the one or more computing devices to perform operations comprising:

identifying a set of candidates that are eligible for caching, wherein the set of candidates includes recently timed out requests for information associated with the set of candidates, and wherein the set of candidates includes two or more cache keys, two or more search queries, or two or more HTTP GET requests;

receiving a first request associated with a web resource;

receiving a second request associated with the web resource;

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

in response to determining that the second request is received within the predetermined amount of time:

determining that an amount of time for retrieving information responsive to the second request exceeds a second predetermined amount of time;

determining that the second request has timed out based on determining that the amount of time for retrieving the information responsive to the second request exceeds the second predetermined amount of time;

in response to determining that the second request has timed out, determining to update the set of candidates based on determining that the second request has timed out, and

in response to determining to update the set of candidates, updating the set of candidates that are eligible for caching to include a new candidate that represents the information responsive to the second request, the new candidate comprises a particular HTTP GET request represented by the second request;

in response to updating the set of candidates that are eligible for caching to include the new candidate, retrieving the information responsive to the particular HTTP GET request; and

caching the information responsive to the particular HTTP GET request at a server system.

7. The system of claim 6 , wherein:

the first request represents a first HTTP GET request associated with the web resource; and

the first HTTP GET request is different from the particular HTTP GET request represented by the second request.

8. The system of claim 7 , wherein the operations further comprise:

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

caching the information responsive to the particular HTTP GET request at the server system comprises indexing the particular cache key in association with the information responsive to the particular HTTP GET request.

9. The system of claim 8 , wherein the particular cache key is indexed in association with the information responsive to the particular HTTP GET request that has been cached at the server system for a duration of time from receiving the first request to receiving the second request.

10. The system of claim 8 , wherein the operations further comprise:

in response to receiving the second request, determining that (i) the particular 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 information responsive to the particular HTTP GET request that has been cached at the server system.

11. At least one non-transitory computer-readable storage device storing instructions executable by one or more processors that cause one or more processors to perform operations comprising:

identifying a set of candidates that are eligible for caching, wherein the set of candidates includes recently timed out requests for information associated with the set of candidates, and wherein the set of candidates includes two or more cache keys, two or more search queries, or two or more HTTP GET requests;

receiving a first request associated with a web resource;

receiving a second request associated with the web resource;

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

in response to determining that the second request is received within the predetermined amount of time:

determining that an amount of time for retrieving information responsive to the second request exceeds a second predetermined amount of time,

determining that the second request has timed out based on determining that the amount of time for retrieving the information responsive to the second request exceeds the second predetermined amount of time,

in response to determining that the second request has timed out, determining to update the set of candidates based on determining that the second request has timed out, and

in response to determining to update the set of candidates, updating the set of candidates that are eligible for caching to include a new candidate that represents the information responsive to the second request, the new candidate comprises a particular HTTP GET request represented by the second request;

in response to updating the set of candidates that are eligible for caching to include the new candidate, retrieving the information responsive to the particular HTTP GET request; and

caching the information responsive to the particular HTTP GET request at a server system.

12. The non-transitory computer-readable storage device of claim 11 , wherein:

the first request represents a first HTTP GET request associated with the web resource; and

the first HTTP GET request is different from the particular HTTP GET request represented by the second request.

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

determining that the first HTTP GET request corresponds to a particular cache key; and caching the information responsive to the particular HTTP GET request at the server system comprises indexing the particular cache key in association with the information responsive to the particular HTTP GET request.

14. The non-transitory computer-readable storage device of claim 13 , wherein the particular cache key is indexed in association with the information responsive to the particular HTTP GET request that has been cached at the server system for a duration of time from receiving the first request to receiving the second request.

Assignments (2)
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 Jun 7, 2021
From: TEAGUE, CHARLES; GANG, DAVID; LIM, HYOO; COLLINS, JEREMY
To: PERFECT SENSE, INC.
Reel/Frame 056460/0245 →
Continuity (2)
Continuation 15851831 · Dec 22, 2017
Continuation 14918982 · Oct 21, 2015
References Cited (44)
US 5897634A · Attaluri et al. · 1999 [cited by applicant]
US 6055572A · Saksena · 2000 [cited by applicant]
US 6078943A · Yu · 2000 [cited by applicant]
US 6185608B1 · Hon et al. · 2001 [cited by applicant]
US 6487641B1 · Cusson et al. · 2002 [cited by applicant]
US 6697849B1 · Carlson · 2004 [cited by applicant]
US 7624126B2 · Pizzo et al. · 2009 [cited by applicant]
US 7698411B2 · Burckart et al. · 2010 [cited by applicant]
US 7765196B2 · Papanyan et al. · 2010 [cited by applicant]
US 7797298B2 · Sareen et al. · 2010 [cited by applicant]
US 7840547B1 · Tucker · 2010 [cited by examiner]
US 8560509B2 · Xia et al. · 2013 [cited by applicant]
US 8775550B2 · Jeyaseelan et al. · 2014 [cited by applicant]
US 8880635B1 · Singh · 2014 [cited by examiner]
US 8959179B2 · Reeser · 2015 [cited by applicant]
US 9876873B1 · Teague et al. · 2018 [cited by applicant]
US 20020087797A1 · Adrangi · 2002 [cited by examiner]
US 20030120752A1 · Corcoran · 2003 [cited by applicant]
US 20040044731A1 · Chen et al. · 2004 [cited by applicant]
US 20040073604A1 · Moriya et al. · 2004 [cited by applicant]
US 20060026154A1 · Altinel et al. · 2006 [cited by applicant]
US 20120072588A1 · Karnath et al. · 2012 [cited by applicant]
US 20120297010A1 · Zhang · 2012 [cited by applicant]
US 20130159627A1 · Shea · 2013 [cited by applicant]
US 20130339407A1 · Sharpe · 2013 [cited by examiner]
US 20150039713A1 · Martini · 2015 [cited by examiner]
US 20180285327A1 · Mahkovec · 2018 [cited by examiner]
US 20200167281A1 · Flores · 2020 [cited by examiner]
WO WO2012139328 · 2012 [cited by applicant]
Anindya Datta et al., “A Comparative Study of Alternative Middle Tier Caching Solutions to Support Dynamic Web Content Acceleration,” Proceedings of the 27th VLDB Conference, Roma, Italy, 2001, 4 total pages. [cited by applicant]
Brian D. Davison, “A Web Caching Primer,” Department of Computer Science, Rutgers, The State University of New Jersey (USA), http://www.cs_rutgers.edurdavison/, Copyright IEEE_ Reprinted from IEEE InternetComputing, vol… [cited by applicant]
Derrick Pisani, “Caching Dynamic Content from Syndicated Web Sites.,” Department of Computer Science and AI University of Malta, Jun. 2002, 83 total pages. [cited by applicant]
Evangelos P. Markatos, “On Caching Search Engine Query Results,” Institute of Computer Science (ICS), Foundation for Research & Technology—Hellas (FORTH), in Proceedings of the 5th International Web Caching and Content … [cited by applicant]
Jia Wang, “A Survey of Web Caching Schemes for the Internet,” Cornell Network Research Group (C/NRG) Department of Computer Science, Cornell University, Ithaca, NY, ACM SIGCOMM, Computer Communication Review, :>pp. 36-4… [cited by applicant]
John Peterson, “A Simple Method for Caching HTTP Requests,” ASP 101—A Simple Method for Caching HTTP Requests, https://web.archive.org/web/20040204231158/http://www_asp101.com/articles/john/httpcaching/default.asp,lApr.… [cited by applicant]
John Peterson, “Server-Side Caching Options,” ASP 101 Server-Side Caching Options, https://web.archive.org/Neb/20040206204052/http:/lwww .asp 1O1.com/articles/john/server_side_caching/index.asp, Apr. 1, 2015, 4 total Ja… [cited by applicant]
K.-Y. Wong et al., “Alternative web caching design: a site-based approach, ” www.ietdl.org, IET Commun., 2010, vol. 4, SS_12,pp. 1504-1515. [cited by applicant]
K. Y. Wong et al., “Bypassing Proxy: a Solution to Overloaded Web Caching Systems,” Proceedings of the 5 [cited by applicant]
Khalil Amiri et al., “DBProxy: A dynamic data cache forWeb applications,” IBM T.J. Watson Research Center, [email protected], Hawthorne, NY, p. 1-11. [cited by applicant]
Kin Yeung Wong et al., “Site-Based Approach to Web Cache Design,” City University of Hong Kong, http://computer.Jrg/intemet/, IEEE Internet Computing, Sep.-Oct. 2001, pp. 28-34. [cited by applicant]
Patricia Correia Saraiva et al., “Rank-Preserving Two-Level Caching for Scalable Search Engines,” fpcs,edleno,nivio, meira,rfonseca,[email protected], SIGIR'01, Sep. 9-12, 2001, New Orleans, Louisiana, USA, pp. 51-5… [cited by applicant]
Qiong Luo et al., “Active Query Caching for Database Web Servers,” Computer Sciences Department, University of Wisconsin-Madison, {giongluo,sekar,yunrui,cao,naughton} @cswisc.edu, 20 total pages. [cited by applicant]
Ricardo Baeza-Yates et al., “The Impact of Caching on Search Engines,” SIGIR 2007 Proceedings, Session 8: Managing Memory, Jul. 23-27, 2007, Amsterdam, The Netherlands, pp. 183-190. [cited by applicant]
Tiziano Fagni et al., “Boosting the Performance of Web Search Engines: Caching and Prefetching Query Results by Exploiting Historical Usage Data,” ACM Transactions on Information Systems, vol. 24, No. 1, Jan. 2006, pp. … [cited by applicant]