Class PushCacheFilter

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

@ManagedObject("Push cache based on the HTTP \'Referer\' header") public class PushCacheFilter extends Object implements javax.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

  • Field Details

    • LOG

      private static final Logger LOG
    • _ports

      private final Set<Integer> _ports
    • _hosts

      private final Set<String> _hosts
    • _cache

    • _associatePeriod

      private long _associatePeriod
    • _maxAssociations

      private int _maxAssociations
    • _renew

      private long _renew
    • _useQueryInKey

      private boolean _useQueryInKey
  • Constructor Details

    • PushCacheFilter

      public PushCacheFilter()
  • Method Details

    • init

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

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

      public void destroy()
      Specified by:
      destroy in interface javax.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()