# US 9,521,214 B2 · Application acceleration with partial file caching

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

- Number: US 9,521,214 B2
- Document ID: US9521214B2
- Status: Granted
- Kind: B2
- Application number: 13/237,722
- Filed: 2011-09-20
- Published: 2013-03-21
- Granted: 2016-12-13
- Earliest claimed: 2011-09-20
- Assignees: Instart Logic, Inc.
- Applicants: Hariharan Kolam; Manav Ratan Mital; Raghu Venkat
- Inventors: Hariharan Kolam; Manav Ratan Mital; Raghu Venkat
- Web page: https://patentgrep.com/patent/US9521214B2

## CPC

- H04L 67/34: {involving the movement of software or configuration parameters (network booting or remote initial program loading [RIPL] G06F9/4416)}
- H04L 67/2885: Hierarchically arranged intermediate devices, e.g. for hierarchical caching
- H04L 67/131: Protocols for games, networked simulations or virtual reality
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)

## Abstract

A method of distributing content is disclosed. The method includes receiving by an edge server an indication indicating that a client has sent a request for a file that includes content related to executing an application. The method includes analyzing interaction with the client by the edge server to determine a first portion of the file that is likely to be required by the client for executing the application sooner than a second portion of the file. The method further includes generating by the edge server a modified file that includes the first portion of the file. The method further includes transmitting the modified file to the client.

## Claims

### Claim 1

A method of distributing content, comprising:
receiving by an edge server an indication indicating that a client has sent a file request for a file that includes a plurality of pieces of content related to executing an application;
analyzing by the edge server previous content requests by one or more clients to determine a first portion of the file that is likely to be required by the client for executing the application sooner than a second portion of the file, wherein a previous content request by one client comprises an explicit request sent to the edge server or another server, requesting a specific piece of content related to executing the application;
generating by the edge server a modified file that includes the first portion of the file, wherein the first portion of the file includes a partial file corresponding to the file, and wherein the partial file is fetched from a cache within a hierarchy of caches, and wherein a level of the cache within the hierarchy of caches is determined at least in part based on the analyzed previous content requests by the one or more clients, and wherein a cache located at a higher level within the hierarchy of caches has a higher network latency path to the client; and
transmitting the modified file to the client.

### Claim 2 (depends on 1)

The method of claim 1, wherein the determining of the level of the cache within the hierarchy of caches further comprises determining the level of the cache at least in part based on how likely the partial file is required by the client and other clients for executing the application.

### Claim 3 (depends on 1)

The method of claim 1, wherein the cache is located at one of the following: a primary store server, the edge server, or other edge servers.

### Claim 4 (depends on 3)

The method of claim 3, wherein the primary store server has access to the file, and wherein the partial file is distributed to the cache from the primary store server.

### Claim 5 (depends on 1)

The method of claim 1, wherein the first portion of the file is sufficient to permit initial functioning of the application, and wherein the modified file is formatted with at least one placeholder for the second portion of the file, and wherein the application can begin to access the first portion of the file by accessing the modified file, and wherein the application can access the second portion of the file using the at least one placeholder.

### Claim 6 (depends on 5)

The method of claim 5, wherein accessing the second portion of the file using the at least one placeholder comprises accessing the portion from one of the following: a cache located on a device on which the client runs, a file system located on the device on which the client runs, or a memory located on the device on which the client runs.

### Claim 7 (depends on 5)

The method of claim 5, wherein accessing the second portion of the file using the at least one placeholder comprises sending a request for the portion by the client.

### Claim 8 (depends on 1)

The method of claim 1, wherein the first portion of the file is based on a state of the application.

### Claim 9 (depends on 8)

The method of claim 8, wherein the application is a game application, and wherein the state of the application is a player level.

### Claim 10 (depends on 1)

The method of claim 1, wherein the first portion of the file comprises likely to be used portions of the file.

### Claim 11 (depends on 1)

The method of claim 1, wherein the file is a Small Web Format (SWF) file.

### Claim 12 (depends on 1)

The method of claim 1, wherein the file includes a script, and wherein the modified file includes a modified script.

### Claim 13 (depends on 1)

The method of claim 1, wherein the file includes a first class, and wherein the modified file includes a second class that imports the first class.

### Claim 14 (depends on 1)

The method of claim 1, further comprising transmitting a subset of the second portion of the file to the client prior to the client requesting the subset.

### Claim 15 (depends on 14)

The method of claim 14, wherein the subset is in part based on how likely the subset is used by the application.

### Claim 16

An edge server for distributing content, comprising:
a processor configured to:
receive an indication indicating that a client has sent a file request for a file that includes a plurality of pieces of content related to executing an application;
analyze previous content requests by one or more clients to determine a first portion of the file that is likely to be required by the client for executing the application sooner than a second portion of the file, wherein a previous content request by one client comprises an explicit request sent to the edge server or another server, requesting a specific piece of content related to executing the application;
generate a modified file that includes the first portion of the file, wherein the first portion of the file includes a partial file corresponding to the file, and wherein the partial file is fetched from a cache within a hierarchy of caches, and wherein a level of the cache within the hierarchy of caches is determined at least in part based on the analyzed previous content requests by the one or more clients, and wherein a cache located at a higher level within the hierarchy of caches has a higher network latency path to the client; and
transmit the modified file to the client; and
a memory coupled to the processor and configured to provide the processor with instructions.

### Claim 17 (depends on 16)

The edge server of claim 16, wherein the determining of the level of the cache within the hierarchy of caches further comprises determining the level of the cache at least in part based on how likely the partial file is required by the client and other clients for executing the application.

### Claim 18 (depends on 16)

The edge server of claim 16, wherein the cache is located at one of the following: a primary store server, the edge server, or other edge servers.

### Claim 19 (depends on 18)

The edge server of claim 18, wherein the primary store server has access to the file, and wherein the partial file is distributed to the cache from the primary store server.

### Claim 20 (depends on 16)

The edge server of claim 16, wherein the first portion of the file is sufficient to permit initial functioning of the application, and wherein the modified file is formatted with at least one placeholder for the second portion of the file, and wherein the application can begin to access the first portion of the file by accessing the modified file, and wherein the application can access the second portion of the file using the at least one placeholder.

### Claim 21 (depends on 20)

The edge server of claim 20, wherein accessing the second portion of the file using the at least one placeholder comprises accessing the portion from one of the following: a cache located on a device on which the client runs, a file system located on the device on which the client runs, or a memory located on the device on which the client runs.

### Claim 22 (depends on 20)

The edge server of claim 20, wherein accessing the second portion of the file using the at least one placeholder comprises sending a request for the portion by the client.

### Claim 23 (depends on 16)

The edge server of claim 16, wherein the first portion of the file is based on a state of the application.

### Claim 24 (depends on 23)

The edge server of claim 23, wherein the application is a game application, and wherein the state of the application is a player level.

### Claim 25 (depends on 16)

The edge server of claim 16, wherein the first portion of the file comprises likely to be used portions of the file.

### Claim 26 (depends on 16)

The edge server of claim 16, wherein the file is a Small Web Format (SWF) file.

### Claim 27 (depends on 16)

The edge server of claim 16, wherein the file includes a script, and wherein the modified file includes a modified script.

### Claim 28 (depends on 16)

The edge server of claim 16, wherein the file includes a first class, and wherein the modified file includes a second class that imports the first class.

### Claim 29 (depends on 16)

The edge server of claim 16, further comprising transmitting a subset of the second portion of the file to the client prior to the client requesting the subset.

### Claim 30 (depends on 29)

The edge server of claim 29, wherein the subset is in part based on how likely the subset is used by the application.

### Claim 31

A computer program product for distributing content, the computer program product being embodied in a non-transitory computer readable storage medium and comprising computer instructions for:
receiving by an edge server an indication indicating that a client has sent a file request for a file that includes a plurality of pieces of content related to executing an application;
analyzing by the edge server previous content requests by one or more clients to determine a first portion of the file that is likely to be required by the client for executing the application sooner than a second portion of the file, wherein a previous content request by one client comprises an explicit request sent to the edge server or another server, requesting a specific piece of content related to executing the application;
generating by the edge server a modified file that includes the first portion of the file, wherein the first portion of the file includes a partial file corresponding to the file, and wherein the partial file is fetched from a cache within a hierarchy of caches, and wherein a level of the cache within the hierarchy of caches is determined at least in part based on the analyzed previous content requests by the one or more clients, and wherein a cache located at a higher level within the hierarchy of caches has a higher network latency path to the client; and
transmitting the modified file to the client.
