class SecondaryKeyCalculator extends AnyRef
Ordering
- Alphabetic
- By Inheritance
Inherited
- SecondaryKeyCalculator
- AnyRef
- Any
- Hide All
- Show All
Visibility
- Public
- Protected
Instance Constructors
- new SecondaryKeyCalculator()
Value Members
- def calculate(request: CacheRequest, responseHeaders: Map[HeaderName, Seq[String]]): Option[Map[HeaderName, Seq[String]]]
Finds the selecting header fields, based off the response's Vary header and the original request.
Finds the selecting header fields, based off the response's Vary header and the original request.
- request
the original request
- responseHeaders
the origin response
- returns
the selecting header fields, or None if there are no keys.
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/rfc7234#section-4.1
https://tools.ietf.org/html/rfc7231#section-7.1.4