![]() Version: 9.4.12.v20180830 |
private support for your internal/customer projects ... custom extensions and distributions ... versioned snapshots for indefinite support ... scalability guidance for your apps and Ajax/Comet projects ... development services for sponsored feature development
HTTP/2 Push is a mechanism that allows the server to send multiple resources to the client for a single client request. This will reduce the amount of round-trips necessary to retrieve all the resources that make up a web page and can significantly improve the page load time.
HTTP/2 Push can be automated in your application by configuring a PushCacheFilter
in the web.xml
, in this way:
<?xml version="1.0" encoding="UTF-8"?>
<web-app
xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
metadata-complete="true"
version="3.1">
...
<filter>
<filter-name>PushFilter</filter-name>
<filter-class>org.eclipse.jetty.servlets.PushCacheFilter</filter-class>
<async-supported>true</async-supported>
</filter>
<filter-mapping>
<filter-name>PushFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
...
</web-app>
PushCacheFilter
analyzes the HTTP requests for resources that arrive to your web application.
Some of these requests contain the HTTP Referer
header that points to a resource that has been requested previously.
This allows the PushCacheFilter
to organize resources in a tree, for example a root index.html
resource having two children resources, styles.css
and application.js
, and styles.css
having a child resource, background.png
.
The root resource is called the primary resource, while descendant resources are called secondary resources.
The resource tree is built using a time window so that when a root resource is requested, only subsequent requests that are made within the time window will be added to the resource tree. The resource tree can also be limited in size so that the number of secondary resources associated to a primary resource is limited.
By default, only the resource path (without the query string) is used to associate secondary resources to the primary resource, but you can configure PushCacheFilter
to take the query string into account.
PushCacheFilter
can be configured with the following init-params
:
associatePeriod
: the time window, in milliseconds, within which a request for a secondary resource will be associated to a primary resource; defaults to 4000 msmaxAssociations
: the max number of secondary resources that may be associated to a primary resource; defaults to 16hosts
: a comma separated list of hosts that are allowed in the Referer
header; defaults to the host in the Host
headerports
: a comma separated list of ports that are allowed in the Referer
header; defaults to the port in the Host
headeruseQueryInKey
: a boolean indicating whether the query string of the request should be considered when associating secondary resources to primary resources; defaults to false