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 having a child resource,
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
associatePeriod: the time window, in milliseconds, within which a request for a secondary resource will be associated to a primary resource; defaults to 4000 ms
maxAssociations: the max number of secondary resources that may be associated to a primary resource; defaults to 16
hosts: a comma separated list of hosts that are allowed in the
Refererheader; defaults to the host in the
ports: a comma separated list of ports that are allowed in the
Refererheader; defaults to the port in the
useQueryInKey: a boolean indicating whether the query string of the request should be considered when associating secondary resources to primary resources; defaults to