spdy: push referrer call period starts when first resource is added. Before it started when main resource was created
This commit is contained in:
parent
652fcc3552
commit
77c673c89b
|
@ -24,6 +24,7 @@ import java.util.Set;
|
|||
import java.util.concurrent.ConcurrentHashMap;
|
||||
import java.util.concurrent.ConcurrentMap;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
import java.util.concurrent.atomic.AtomicLong;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
import org.eclipse.jetty.spdy.api.Headers;
|
||||
|
@ -213,17 +214,23 @@ public class ReferrerPushStrategy implements PushStrategy
|
|||
private class MainResource
|
||||
{
|
||||
private final String name;
|
||||
private final long created = System.nanoTime();
|
||||
private final Set<String> resources = Collections.newSetFromMap(new ConcurrentHashMap<String, Boolean>());
|
||||
private final AtomicLong firstResourceAdded = new AtomicLong(-1);
|
||||
|
||||
MainResource(String name)
|
||||
private MainResource(String name)
|
||||
{
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
public boolean addResource(String url, String origin, String referrer)
|
||||
{
|
||||
long delay = TimeUnit.NANOSECONDS.toMillis(System.nanoTime() - created);
|
||||
// We start the push period here and not when initializing the main resource, because a browser with a
|
||||
// prefilled cache won't request the subresources. If the browser with warmed up cache now hits the main
|
||||
// resource after a server restart, the push period shouldn't start until the first subresource is
|
||||
// being requested.
|
||||
firstResourceAdded.compareAndSet(-1, System.nanoTime());
|
||||
|
||||
long delay = TimeUnit.NANOSECONDS.toMillis(System.nanoTime() - firstResourceAdded.get());
|
||||
if (!referrer.startsWith(origin) && !isPushOriginAllowed(origin))
|
||||
{
|
||||
logger.debug("Skipped store of push metadata {} for {}: Origin: {} doesn't match or origin not allowed",
|
||||
|
|
Loading…
Reference in New Issue