Reduced latency for subresource transfer

Methods and systems for reducing web page load time are provided. A method for reducing web page load time may include determining subresources of a requested web page. The method may also include requesting the plurality of subresources in a packet. This may be a single request packet for all of the subresources of a web page. Another method for reducing web page load time may include determining subresources to be returned from a request packet. The method may also include generating and returning the subresources in response to the request packet. A system for reducing web page load time may include a subresource determiner and a subresource requester. Another system for reducing web page load time may include a subresource request determiner, a subresource generator and a subresource returner.

BACKGROUND

1. Technical Field

The field relates to network protocols and the World Wide Web.

Web browsers are software applications that allow a user to view or download content that is available on a network, such as on a website on the World Wide Web. Content may include text, files, images, audio, video and personal communications. Web pages present such content and are located using uniform resource identifiers (URI) such as a uniform resource locator (URL). Web pages may be retrieved using the Internet Protocol (IP) address of the computer holding the web page content.

Browsers may use a number of protocols and standards to obtain or manage content flow. Most browsers primarily use hypertext transfer protocol (HTTP) to fetch content and web pages. HTTP is an application level protocol providing basic request/response semantics. For example, as shown inFIG. 1, HTTP Requester110may send a request, such as for a web page, over network120. HTTP Responder130may receive the HTTP request and return an HTTP response, such as content for the requested web page.

Web pages today usually require multiple subresources, such as images, scripts, video, links, news or other web page content. These subresources are often retrieved from other server domains. Unfortunately, HTTP makes separate requests for each of these subresources. These multiple request/response roundtrips contribute to an accumulated latency that can cause discomfort to users of a web browser.

BRIEF SUMMARY

Embodiments described herein refer to systems and methods for reducing web page load time. According to an embodiment, a method for reducing web page load time may include determining a plurality of subresources of a requested web page. The method may also include requesting the plurality of subresources in a packet. This may be a single request packet for all of the subresources of a web page.

According to a further embodiment, a method for reducing web page load time may include determining a plurality of subresources to be returned from a request packet. The method may also include generating the plurality of subresources. The method may further include returning the plurality of subresources in response to the request packet.

According to another embodiment, a system for reducing web page load time may include a subresource determiner configured to determine a plurality of subresources of a requested web page. The system may also include a subresource requester configured to request the plurality subresources in a packet.

According to a further embodiment, a system for reducing web page load time may include a subresource request determiner configured to determine a plurality of subresources to be returned from a request packet. The system may also include a subresource generator configured to generate the plurality of subresources. The system may further include a subresource returner configured to return the plurality of subresources in response to the request packet.

DETAILED DESCRIPTION OF THE INVENTION

HTTP is the application level protocol providing basic request/response semantics. Transmission Control Protocol (TCP) is a generic, reliable transport protocol, providing guaranteed delivery, duplicate suppression, in-order delivery, flow control, congestion avoidance and other transport features. When network traffic is required, User Datagram Protocol (UDP) packets are sent to another computer and eventually a UDP response is provided. Unfortunately, HTTP over TCP was not particularly designed with consideration of latency effects.

Web pages today usually require multiple subresources, such as images, scripts, video, links, news or other web page content. Unfortunately, HTTP makes separate requests for each of these subresources. For example, two separate requests are made as a web page parser discovers the need to obtain subresources for a web page. As shown below there are two separate requests: one for “foo.js” and a later request for “foo.jpg”.

The embodiments described herein provide for reducing web page load time by requesting the subresources for a web page at an earlier time, perhaps all at once. The goal of requesting multiple sub-resources at the same time is to reduce user-perceived latency when navigating the Internet. In some cases, subresources may also be fetched using subresource uniform resource identifiers (URIs), which are characters used to identify a name or resource on the Internet. Subresources may also be fetched using uniform resource locators (URLs) such as domains, hostnames, hostnames plus paths or other sources of content.

FIG. 2is an architecture diagram of exemplary system200for reducing web page load time, according to an embodiment. System200includes HTTP requester210. HTTP requester210may be an HTTP web client or web server established on a local device. A local device may be a computing device. Examples of computing devices include, but are not limited to, a computer, workstation, distributed computing system, computer cluster, embedded system, stand-alone electronic device, networked device, mobile device (e.g. mobile phone, smart phone or mobile computing device), rack server, set-top box, or other type of computer system having at least one processor and memory. Such a computing device may include software, firmware, hardware, or a combination thereof. Software may include one or more applications and an operating system. Hardware can include, but is not limited to, a processor, memory and graphical user interface display.

According to an embodiment, HTTP requester210may be configured to provide the functionality of a web client, which is a software component that makes an HTTP request to an HTTP responder, such as an HTTP server. A web server may contain web applications which generate content in response to an HTTP request. A web server may package the generated content and serve the content to a client in the form of an HTTP response. HTTP requester210may transmit HTTP requests and receive HTTP responses over network120.

According to an embodiment, HTTP requester210may include subresource determiner220and subresource requester230. Subresource determiner220may be configured to determine multiple subresources of a web page that must be obtained and loaded, according to an embodiment. These subresources must be requested.

In some embodiments, subresource determiner220may determine subresources for a web page from metadata of the web page. Metadata may include subresource types, values, URIs or other identifying information. This subresource information may be used to form a request for all of the subresources at once or early on. In some embodiments, a subresource header field of the HTTP requester and/or the HTTP responder may need to be enabled. Server content may be enabled by web content developers who are seeking to improve the delivery of their web content and the experience of web page visitors. An HTTP requester or client may receive a response with a subresource header. It may decode the value and generate requests for the URIs listed in the header. In other embodiments, subresource determiner220may parse a web page in order to collect subresource types and sources.

Subresource determiner220may be coupled to subresource requester230. Subresource requester230may be configured to request multiple subresources at one time. This may be performed with a single request. This may also involve multiple requests are messages in a single packet.

As shown above the requests for “foojs” and “foo.jpg” are made together. By requesting subresources earlier on, the subresources may be returned and loaded in parallel with other aspects of the web page. This parallel process may reduce the number of round trips and thus reduce latency. In some cases, if more subresources are needed than can fit into the first packet, follow on packets, each with multiple resources, may be sent for the other subresources.

According to an embodiment, subresource requester230may request multiple subresources in the next request packet. This may be the request packet immediately subsequent to the initial request for the web page or index of the web page. The request for the subresources may be made in a single packet. The request for the subresources of the web page may be made, and possibly returned, before any other requests for subresources or web page content.

Subresource requester230may load requests for the plurality of subresources into an HTTP request header that is then transmitted over network120to the HTTP responder, according to an embodiment. The request for subresources may be performed at the beginning of the loading of the requested web page. It may be the first task upon arriving at a web page. Subresource content may be received at the same time as the rest of the page is being rendered. In another embodiment, the subresources may be expected to be returned according to an order listed in the subresource request packet. In some cases, subresource requests may be made in the content of a request packet. Subresources may also be prefetched using a reference tag or reference link.

FIG. 3is an architecture diagram of exemplary system300for reducing web page load time, according to an embodiment. System300includes HTTP responder310. HTTP responder310may be an HTTP web client or web server established on a local device.

According to an embodiment, HTTP responder310may include subresource request determiner330, subresource generator340and subresource returner320. According to a further embodiment, subresource returner320may be configured to receive HTTP headers over network120. This may be the result of establishing an HTTP request-response pair between HTTP requester210and HTTP responder310corresponding to one or more web page requests.

According to an embodiment, subresource returner320may be configured to determine HTTP header information according to packets or requests received in association with a web page request or HTTP request. Subresource request determiner330may determine subresources that are requested and that should be returned to the requesting client or server. These may be obtained from a request header that is formed according to an understood format. In another embodiment, the request packet may indicate that it is enabled to request the subresources at once. The HTTP responder may be configured to receive this message or value and begin returning all of the subresources for the web page. These subresources may be similar to those that would be found in the metadata of the web page.

Subresource generator340may locate and/or provide subresources as requested, according to an embodiment. Subresources may be obtained by consulting a database of subresource information. It is possible that subresources are identified by a third party or obtained from the database. In some cases, subresources may be dynamically generated from one or more sources of content. Subresources may also be generated by parsing markup files, such as HTML or XML.

According to an embodiment, subresources may be returned by subresource returner320as an X-subresource header to the client as part of the HTTP response header block. An example header is shown below with the following format:

Each resource consists of a type and a URI. The type is the mime-type of the URI, such as “text/html”, “image/gif”, etc. The URI is a standard HTTP URI. For example: X-subresource: text/css; http://www.foo.com/styles/foo.css; image/gif/images/img1.gif. Other header formats may be used.

There are instances when some filtering or selection of subresources may take place by a component of HTTP responder310. A server might not use subresource headers which are not cacheable. In other cases, subresources whose lifetime might expire before the end of the current page load may be selected out or not provided.

FIG. 4is a flowchart of exemplary method400for reducing web page load time according to an embodiment. Subresource requests may be bundled or combined into a single request or packet.FIG. 5is a flowchart of exemplary method500for reducing web page load time according to another embodiment. Subresources requested at once may be identified or generated and returned to the requester. While methods400and500are described with respect to an embodiment of the present invention, methods400and500are not meant to be limiting and may be used in other applications. In an example, methods400and500may be used to reduce web page or web content load time using systems200and300ofFIG. 2or3. However, methods400and500are not meant to be limited to systems200or300.

As shown inFIG. 4, exemplary method400begins at step402where subresources of a web page are determined. A user may navigate to a web page. Upon navigation, the subresources may be apparent. In an embodiment, subresources may be listed in the metadata of the web page. This provides for a quicker request of the subresources at once. In other cases, subresource names or information may need to be gathered or collected. Such information may be in the web page or may be obtained from another source pointed to by the web page. In some embodiments, subresource determiner220may be used to determine the subresources. This may involve parsing a subresource list in preparation for a request of the subresources.

At step404, the multiple determined subresources may form a single request for the subresources. In most cases, a single packet may be used. In further embodiments, an HTTP request header may be loaded with the subresources to be requested. Subresource requester230may perform these steps and request the subresources. Steps402-404may be implemented as software, hardware, firmware, or any combination thereof.

InFIG. 5, exemplary method500begins at stage502where subresources that are requested and expected to be returned are determined. This may include parsing a header or content of the request packet. This may also involve identifying an enablement tag. Once the subresources are determined by subresource request determiner330, they may be gathered or generated by subresource generator340at step504.

At step504, the subresources are generated. Subresources may be fetched from the server or other domain servers. Subresources may be generated based on the request information. Subresources may also be obtained from or by consulting a subresource database or other data repository or source, local or remote.

At step506, the subresources may be returned by subresource returner320. These may be returned in the content of one or more packets. The subresources may be returned in an order specified by the request packet. Steps502-506may be implemented as software, hardware, firmware, or any combination thereof.

Aspects of the present invention, for exemplary system200, system300, method400and/or method500or any part(s) or function(s) thereof may be implemented using hardware, software modules, firmware, tangible computer readable or computer usable storage media having instructions stored thereon, or a combination thereof and may be implemented in one or more computer systems or other processing systems.