class
SecondaryKeyCalculator extends AnyRef
Instance Constructors
-
new
SecondaryKeyCalculator()
Value Members
-
final
def
!=(arg0: AnyRef): Boolean
-
final
def
!=(arg0: Any): Boolean
-
final
def
##(): Int
-
final
def
==(arg0: AnyRef): Boolean
-
final
def
==(arg0: Any): Boolean
-
final
def
asInstanceOf[T0]: T0
-
def
calculate(request: CacheRequest, responseHeaders: Map[HeaderName, Seq[String]]): Option[Map[HeaderName, Seq[String]]]
-
def
clone(): AnyRef
-
final
def
eq(arg0: AnyRef): Boolean
-
def
equals(arg0: Any): Boolean
-
def
finalize(): Unit
-
final
def
getClass(): Class[_]
-
def
hashCode(): Int
-
final
def
isInstanceOf[T0]: Boolean
-
final
def
ne(arg0: AnyRef): Boolean
-
final
def
notify(): Unit
-
final
def
notifyAll(): Unit
-
final
def
synchronized[T0](arg0: ⇒ T0): T0
-
def
toString(): String
-
final
def
wait(): Unit
-
final
def
wait(arg0: Long, arg1: Int): Unit
-
final
def
wait(arg0: Long): Unit
Inherited from AnyRef
Inherited from Any
This class produces secondary keys for a response from an origin server that contains a Vary header.
The cache must store the response with the requested header from the original request, so that subsequent requests match. This is a little confusing, so an example follows:
A request comes in with:
The response comes back with a Vary header on the Accept-Encoding:
The cache has to look at the Vary header, see that "Accept-Encoding" is a header on the request, and then store "Accept-Encoding: gzip" as a secondary key on the cache entry.
The implication is that the primary key entry of "GET http://example.com/some/path" is insufficient, and in order to get that specific response from cache, any subsequent requests should have a "Accept-Encoding: gzip" header in the same way.
https://tools.ietf.org/html/rfc7231#section-7.1.4
https://tools.ietf.org/html/rfc7234#section-4.1