Leveraging time-windows generated by web browser pre-connections
AssigneeAkamai Technologies, Inc.
InventorsUtkarsh Goel, Moritz Steiner, Yoav Weiss
Life of this patent
Estimating the term…
Abstract
Among other things, this document describes systems, methods and devices for content delivery from a server to a client, and in particular using certain windows of time on the server side—during which little or no activity is expected from a client application—to perform operations that will improve the speed of content delivery.
Claims21
A method for accelerating the delivery of web content from a server to a client, the method performed by the server and comprising:
- establishing a transport layer connection with a client, the transport layer connection carrying at least one HTTP/2 stream;
- in response to the establishment of the transport layer connection, determining a size of an expected time-window, the expected time-window comprising a period of time during which the at least one HTTP/2 stream is expected to be idle immediately after the establishment of the transport layer connection and before the client sends a first HTTP request via the transport layer connection and the at least one HTTP/2 stream;
- determine whether the size of the expected time-window exceeds a threshold;
- in response to a determination that the size of the expected time-window exceeds the threshold, taking an action during the expected time-window, the action comprising at least one of:
- (i) probing the contents of a cache of the client to determine whether the cache of the client stores one or more web resources, and
- (ii) prefetching one or more web resources to the server from another server.
A method operative with one or more servers, the method comprising:
- for a particular hostname, determining first information about the size of a time-window between clients' transport layer connection establishment and an initial content request sent by the clients over the transport layer connection;
- determining second information about resources most often fetched by clients for the particular hostname;
- establishing a particular transport layer connection with a particular client, and receiving the particular hostname from the particular client prior to receiving any content request from the particular client over said particular transport layer connection;
- based on the first and second information, taking at least one of the following actions during the time-window:
- (i) probing the particular client's cache by sending one or more HTTP/2 PUSH_PROMISE frames for one or more resources, and
- (ii) prefetching one or more resources identified by the second information to the server.
An apparatus comprising a computer having circuitry forming at least one processor and at least one memory device storing computer program instructions for execution by the at least one processor to operate the computer to:
- establish a transport layer connection with a client, the transport layer connection carrying at least one HTTP/2 stream;
- in response to the establishment of the transport layer connection, determine a size of an expected time-window, the expected time-window comprising a period of time during which the at least one HTTP/2 stream is expected to be idle immediately after connection the establishment of the transport layer connection and before the client sends a first HTTP request via the transport layer connection and the at least one HTTP/2 stream;
- determine whether the size of the expected time-window exceeds a threshold;
- in response to a determination that the size of the expected time-window exceeds the threshold, take an action during the expected time-window, the action comprising at least one of:
- (i) probe the contents of a cache of the client to determine whether the cache of the client stores one or more web resources, and
- (ii) prefetch one or more web resources to the server from another server.
A system comprising one or more computers, each having circuitry forming at least one processor and at least one memory device storing computer program instructions for execution by the at least one processor, said execution causing the one or more computers to:
- for a particular hostname, determine first information about the size of a time-window between clients' transport layer connection establishment and initial content request;
- determine second information about resources most often fetched by clients for the particular hostname;
- establish a particular transport layer connection to a particular client, and receive the particular hostname from the particular client prior to receiving any content request from the particular client over the particular transport layer connection;
- based on the first and second information, take at least one of the following actions during the time-window:
- (i) probe the particular client's cache by sending one or more HTTP/2 PUSH_PROMISE frames for one or more resources, and
- (ii) prefetch one or more resources identified by the second information to the server.
Dependencies are inferred from the claim text.