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 java.lang.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 aReferer
HTTP header that points toindex.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
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description private static class
PushCacheFilter.PrimaryResource
-
Field Summary
Fields Modifier and Type Field Description private long
_associatePeriod
private java.util.concurrent.ConcurrentMap<java.lang.String,PushCacheFilter.PrimaryResource>
_cache
private java.util.Set<java.lang.String>
_hosts
private int
_maxAssociations
private java.util.Set<java.lang.Integer>
_ports
private long
_renew
private boolean
_useQueryInKey
private static Logger
LOG
-
Constructor Summary
Constructors Constructor Description PushCacheFilter()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
clearPushCache()
void
destroy()
void
doFilter(javax.servlet.ServletRequest req, javax.servlet.ServletResponse resp, javax.servlet.FilterChain chain)
java.util.Map<java.lang.String,java.lang.String>
getPushCache()
void
init(javax.servlet.FilterConfig config)
void
renewPushCache()
-
-
-
Field Detail
-
LOG
private static final Logger LOG
-
_ports
private final java.util.Set<java.lang.Integer> _ports
-
_hosts
private final java.util.Set<java.lang.String> _hosts
-
_cache
private final java.util.concurrent.ConcurrentMap<java.lang.String,PushCacheFilter.PrimaryResource> _cache
-
_associatePeriod
private long _associatePeriod
-
_maxAssociations
private int _maxAssociations
-
_renew
private long _renew
-
_useQueryInKey
private boolean _useQueryInKey
-
-
Method Detail
-
init
public void init(javax.servlet.FilterConfig config) throws javax.servlet.ServletException
- Specified by:
init
in interfacejavax.servlet.Filter
- Throws:
javax.servlet.ServletException
-
doFilter
public void doFilter(javax.servlet.ServletRequest req, javax.servlet.ServletResponse resp, javax.servlet.FilterChain chain) throws java.io.IOException, javax.servlet.ServletException
- Specified by:
doFilter
in interfacejavax.servlet.Filter
- Throws:
java.io.IOException
javax.servlet.ServletException
-
destroy
public void destroy()
- Specified by:
destroy
in interfacejavax.servlet.Filter
-
getPushCache
@ManagedAttribute("The push cache contents") public java.util.Map<java.lang.String,java.lang.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()
-
-