# US 8,572,326 B2 · Method and system for dynamic distributed data caching when a source of data is not available

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 8,572,326 B2
- Document ID: US8572326B2
- Status: Granted
- Kind: B2
- Application number: 13/525,780
- Filed: 2012-06-18
- Published: 2012-10-04
- Granted: 2013-10-29
- Earliest claimed: 2001-01-12
- Assignees: Parallel Networks, LLC
- Applicants: Keith A. Lowery; Bryan S. Chin; David A. Consolver; Gregg A. DeMasters
- Inventors: Keith A. Lowery; Bryan S. Chin; David A. Consolver; Gregg A. DeMasters
- Web page: https://patentgrep.com/patent/US8572326B2

## CPC

- H04L 67/104: Peer-to-peer [P2P] networks
- G06F 16/9537: Spatial or temporal dependent retrieval, e.g. spatiotemporal queries
- G06F 16/9574: {of access to content, e.g. by caching}
- H04L 43/16: Threshold monitoring
- H04L 67/1046: {Joining mechanisms}
- H04L 67/1048: {Departure or maintenance mechanisms}
- H04L 67/1068: {Discovery involving direct consultation or announcement among potential requesting and potential source peers}
- H04L 67/108: {characterised by resources being split in blocks or fragments}
- H04L 67/1097: for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
- H04L 67/568: Storing data temporarily at an intermediate stage, e.g. caching
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

A method and system for dynamic distributed data caching is presented. The method includes establishing a cache community of members for data storage. A request for data at a particular member of the cache community is generated. A cache location in the cache community where the data would be located is determined. A determination is made as to whether the data is stored at the cache location. The data is requested from a source of the data in response to the data not being cached at the cache location. A determination is made as to whether the source is currently unavailable to provide the data. The data is continuously requested from the source while waiting for the source to become available. The particular member is allowed to request other data while waiting for data to become available from the source.

## Claims

### Claim 1

A method for dynamic distributed data caching, comprising:
establishing a cache community of members for data storage;
generating a request for data at a particular member of the cache community;
determining a cache location in the cache community where the data would be located;
determining whether the data is stored at the cache location;
requesting the data from a source of the data in response to the data not being cached at the cache location;
determining that the source is currently unavailable to provide the data;
continuing to request the data from the source while waiting for the source to become available;
allowing the particular member to request other data while waiting for data to become available from the source.

### Claim 2 (depends on 1)

The method of claim 1, further comprising:
retrieving the data when the source becomes available to process the request;
providing the data to the particular member;
caching the data at the cache location.

### Claim 3 (depends on 1)

The method of claim 1, further comprising:
providing the particular member a display indicating a response time to one or more sources of data.

### Claim 4 (depends on 1)

The method of claim 1, further comprising:
generating a cache status message indicating that a caching function is either active or inactive at the particular member.

### Claim 5 (depends on 1)

The method of claim 1, further comprising:
abandoning the request for the data after a predetermined period of time has elapsed without successfully retrieving the data.

### Claim 6 (depends on 1)

The method of claim 1, further comprising:
negotiating a primary distribution of data to be cached among a plurality of cache locations in the cache community.

### Claim 7 (depends on 6)

The method of claim 6, further comprising:
negotiating a secondary distribution of data for the cache community, the secondary distribution anticipating a failure of a member of the cache community.

### Claim 8

A non-transitory computer readable storage medium including code for dynamic distributed data caching, the code operable to:
establish a cache community of members for data storage;
generate a request for data at a particular member of the cache community;
determine a cache location in the cache community where the data would be located;
determine whether the data is stored at the cache location;
request the data from a source of the data in response to the data not being cached at the cache location;
determine that the source is currently unavailable to provide the data;
continue to request the data from the source while waiting for the source to become available;
allow the particular member to request other data while waiting for data to become available from the source.

### Claim 9 (depends on 8)

The medium of claim 8, wherein the code is further operable to
retrieve the data when the source becomes available to process the request;
provide the data to the particular member;
cache the data at the cache location.

### Claim 10 (depends on 8)

The medium of claim 8, wherein the code is further operable to:
provide the particular member a display indicating a response time to one or more sources of data.

### Claim 11 (depends on 8)

The medium of claim 8, wherein the code is further operable to:
generate a cache status message indicating that a caching function is either active or inactive at the particular member.

### Claim 12 (depends on 8)

The medium of claim 8, wherein the code is further operable to:
abandon the request for the data after a predetermined period of time has elapsed without successfully retrieving the data.

### Claim 13 (depends on 6)

The medium of claim 6, wherein the code is further operable to:
negotiate a primary distribution of data to be cached among a plurality of cache locations in the cache community.

### Claim 14 (depends on 13)

The medium of claim 13, wherein the code is further operable to:
negotiate a secondary distribution of data for the cache community, the secondary distribution anticipating a failure of a member of the cache community.

### Claim 15

A system for dynamic distributed data caching, comprising:
a memory operable to store a browser and a cache module;
a processor executing the browser at a particular member of a cache community, the browser operable to generate a request for data;
the processor executing the cache module, the cache module operable to determine a cache location in the cache community where the data would be located, the cache module operable to determine whether the data is stored at the cache location, the cache module operable to request the data from a source of the data in response to the data not being cached at the cache location, the cache module operable to determine that the source is currently unavailable to provide the data, the cache module operable to continue to request the data from the source while waiting for the source to become available,
wherein the browser is allowed to request other data while waiting for data to become available from the source.

### Claim 16 (depends on 15)

The system of claim 15, wherein the cache module is operable to retrieve the data when the source becomes available to process the request, the cache module operable to provide the data to the browser, the cache module operable to cache the data at the cache location.

### Claim 17 (depends on 15)

The system of claim 15, wherein the cache module is operable to provide the browser a display indicating a response time to one or more sources of data.

### Claim 18 (depends on 15)

The system of claim 15, wherein the cache module is operable to generate a cache status message indicating that a caching function is either active or inactive at the particular member.

### Claim 19

The system of claim l5, wherein the cache module is operable to abandon the request for the data after a predetermined period of time has elapsed without successfully retrieving the data.

### Claim 20 (depends on 15)

The system of claim 15, wherein the cache module is operable to negotiating a primary and secondary distribution of data to be cached among a plurality of cache locations in the cache community.
