Class PushCacheFilter

java.lang.Object
org.eclipse.jetty.ee9.servlets.PushCacheFilter
All Implemented Interfaces:
jakarta.servlet.Filter

@ManagedObject("Push cache based on the HTTP \'Referer\' header") public class PushCacheFilter extends Object implements jakarta.servlet.Filter

A filter that builds a cache of secondary resources associated to primary resources.

A typical request for a primary resource such as index.html is immediately followed by a number of requests for secondary resources. Secondary resource requests will have a Referer HTTP header that points to index.html, which is used to associate the secondary resource to the primary resource.

Only secondary resources that are requested within a (small) time period from the request of the primary resource are associated with the primary resource.

This allows to build a cache of secondary resources associated with primary resources. When a request for a primary resource arrives, associated secondary resources are pushed to the client, unless the request carries If-xxx header that hint that the client has the resources in its cache.

If the init param useQueryInKey is set, then the query string is used as as part of the key to identify a resource

  • Constructor Details

    • PushCacheFilter

      public PushCacheFilter()
  • Method Details

    • init

      public void init(jakarta.servlet.FilterConfig config) throws jakarta.servlet.ServletException
      Specified by:
      init in interface jakarta.servlet.Filter
      Throws:
      jakarta.servlet.ServletException
    • doFilter

      public void doFilter(jakarta.servlet.ServletRequest req, jakarta.servlet.ServletResponse resp, jakarta.servlet.FilterChain chain) throws IOException, jakarta.servlet.ServletException
      Specified by:
      doFilter in interface jakarta.servlet.Filter
      Throws:
      IOException
      jakarta.servlet.ServletException
    • destroy

      public void destroy()
      Specified by:
      destroy in interface jakarta.servlet.Filter
    • getPushCache

      @ManagedAttribute("The push cache contents") public Map<String,String> getPushCache()
    • renewPushCache

      @ManagedOperation(value="Renews the push cache contents", impact="ACTION") public void renewPushCache()
    • clearPushCache

      @ManagedOperation(value="Clears the push cache contents", impact="ACTION") public void clearPushCache()