# US 10,313,463 B2 · Systems and methods for avoiding server push of objects already cached at a client

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

- Number: US 10,313,463 B2
- Document ID: US10313463B2
- Status: Granted
- Kind: B2
- Application number: 15/048,586
- Filed: 2016-02-19
- Published: 2016-08-25
- Granted: 2019-06-04
- Earliest claimed: 2015-02-19
- Assignees: Akamai Technologies, Inc.
- Applicants: Akamai Technologies, Inc.
- Inventors: Youssef Nagy Nagieb Garas
- Web page: https://patentgrep.com/patent/US10313463B2

## CPC

- H04L 67/55: Push-based network services
- G06F 16/9574: {of access to content, e.g. by caching}
- G06F 16/986: {Document structures and storage, e.g. HTML extensions}
- H04L 67/568: Storing data temporarily at an intermediate stage, e.g. caching
- H04L 67/60: Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources (admission control or resource allocation H04L47/70)
- 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

This patent document describes, among other things, methods, apparatus, and systems for tracking those resources that a server has pushed to a client, e.g., using the HTTP 2.0 or other server push mechanism. Pushed resources may be cached at the client. By tracking such pushed resources, a server can avoid pushing such cached resources in response to subsequent requests from that client; doing so would be wasteful if the client already has the resource cached. Among other things, techniques for storing, encoding, organizing, and managing data about pushed resources in cookies are disclosed.

## Claims

### Claim 1

A method performed by a web server to avoid pushing resources cached at a client, comprising:
receiving a request from a client for a markup language document, the markup language document being associated with and locatable at a Universal Resource Locator (URL);
accessing a stored list of pushable resources that is associated with the URL, the stored list comprising a list of a plurality of pushable resources;
sending the markup language document to the client, in response to the request;
pushing a particular resource other than the markup language document to the client, without an associated client request therefor, the particular resource being pushed because the particular resource is on the stored list;
setting a cookie on the client, the cookie comprising a single bit that amongst the plurality of pushable resources corresponds only to the particular resource that was pushed from the web server and that is on the stored list, the single bit being set to indicate that the particular resource has been pushed to the client.

### Claim 2 (depends on 1)

The method of claim 1, further comprising:
receiving a second request from the client for a second markup language document located at a second URL;
receiving the cookie from the client in conjunction with the second request;
determining, based on the single bit in the cookie, that the particular resource was previously pushed to the client and, therefore, determining not to push the particular resource to the client.

### Claim 3 (depends on 1)

The method of claim 1, wherein the single bit is encoded in the cookie.

### Claim 4 (depends on 3)

The method of claim 3, wherein the encoding is a base-64 encoding.

### Claim 5 (depends on 1)

The method of claim 1, wherein the index applies across a domain.

### Claim 6 (depends on 1)

The method of claim 1, further comprising storing in the cookie a version number for the stored list.

### Claim 7 (depends on 1)

The method of claim 1, wherein the request comprises an HTTP 2.x request.

### Claim 8

A method performed by a web server to avoid pushing resources cached at a client, comprising: receiving a request from a client for a markup language document, the markup language document being associated with and locatable at a Universal Resource Locator (URL);
accessing a first stored list of pushable resources that is associated with the URL, the stored list comprising a first list of a plurality of pushable resources that are each associated with time to live (TTL) values below a particular value;
sending the markup language document to the client, in response to the request;
pushing a first resource other than the markup language document to the client, without an associated client request for the first resource, the first resource being pushed because the first resource is on the first stored list;
setting a first cookie on the client, the first cookie comprising data corresponding to the first resource that was pushed from the web server and that is on the first stored list, the data indicating that the first resource has been pushed to the client;
wherein the first cookie has a first lifetime longer than the particular value;
accessing a second stored list of pushable resources that is associated with the URL, the second stored list comprising a second list of a plurality of pushable resources that are each associated with time to live (TTL) values above the particular value;
pushing a second resource other than the markup language document to the client, without an associated client request for the second resource, the second resource being pushed because the second resource is on the second stored list;
setting a second cookie on the client, the second cookie comprising data corresponding to the second resource that was pushed from the web server and that is on the second stored list, the data indicating that the second resource has been pushed to the client;
wherein the second cookie has a second lifetime greater than any of the TTL values in the second stored list.

### Claim 9 (depends on 8)

The method claim 8, wherein the first lifetime is in a range of 0 to 15 minutes, and the second lifetime is in a range of 15 minutes to 1 hour.

### Claim 10 (depends on 8)

The method of claim 8, further comprising storing in the first cookie a version number for the first stored list.

### Claim 11 (depends on 8)

The method of claim 8, wherein the request comprises an HTTP 2.x request.

### Claim 12

A method for avoiding server push of resources cached at a client, comprising:
with a web server, receiving a request from a client for a markup language document, the markup language document being associated with and locatable at a Universal Resource Locator (URL);
the web server accessing a stored list of pushable resources that is associated with the particular domain name, the stored list comprising a list of a plurality of pushable resources;
the web server sending the markup language document to the client, in response to the request; the web server pushing a particular resource other than the markup language document to the client, without an associated client request for the particular resource, the particular resource being pushed because the particular resource is on the stored list;
the web server setting a cookie on the client, the cookie comprising data corresponding to the particular resource that was pushed from the web server and that is on the stored list, the data indicating that the particular resource has been pushed to the client;
wherein each of the plurality of pushable resources on the stored list is associated with a time to live (TTL) value and the stored list is associated with a lifetime;
wherein the cookie stores lifetime data that defines a lifetime for the cookie equivalent to the lifetime for the stored list, the lifetime being longer than the TTL values of all the pushable resources on the stored list;
further comprising, prior to the web server receiving the request, and with a process executing on the web server or on a server distinct from the web server, determining TTL values associated with each of the plurality of pushable resources on the stored list, and assigning the plurality of pushable resources to the stored list because they have TTL values less than the lifetime of the stored list.

### Claim 13 (depends on 12)

The method of claim 12, further comprising:
receiving a second request from the client for a second markup language document;
receiving the cookie in conjunction with the second request;
determining whether the lifetime of the cookie has expired; when the lifetime of the cookie has expired: determining to push the particular resource to the client, without an associated client request therefor;
when the lifetime of the cookie has not expired: determining not to push the particular resource to the client, even though the particular resource is on the stored list.

### Claim 14 (depends on 12)

The method claim 12, wherein the lifetime data comprises any of: timestamp and a cookie time-to-live value.

### Claim 15 (depends on 12)

The method of claim 12, wherein the lifetime is proportional to the time-to-live value of the particular resource.

### Claim 16 (depends on 12)

The method of claim 12, wherein the web server stores multiple lists of resources for the URL, each of the multiple stored lists associated with a different lifetime.

### Claim 17 (depends on 12)

The method of claim 12, wherein the stored list is associated with the URL because it is associated with a domain name of the URL.

### Claim 18 (depends on 1)

The method of claim 1, wherein the cookie comprises a plurality of bits, each one of the plurality of bits corresponding to a different pushable resource on the list, the value of that single bit indicating for each corresponding pushable resource whether such resource has been pushed to the client.
