iris/cache/client/ruleset.go
Gerasimos (Makis) Maropoulos 0f113dfcda (#1554) Add support for all common compressions (write and read)
- Remove the context.Context interface and export the *context, the iris.Context now points to the pointer\nSupport compression and rate limiting in the FileServer\nBit of code organisation


Former-commit-id: ad1c61bf968059510c6be9e7f2cceec7da70ba17
2020-07-10 23:21:09 +03:00

34 lines
1.3 KiB
Go

package client
import (
"github.com/kataras/iris/v12/cache/cfg"
"github.com/kataras/iris/v12/cache/client/rule"
"github.com/kataras/iris/v12/cache/ruleset"
"github.com/kataras/iris/v12/context"
)
// DefaultRuleSet is a list of the default pre-cache validators
// which exists in ALL handlers, local and remote.
var DefaultRuleSet = rule.Chained(
// #1 A shared cache MUST NOT use a cached response to a request with an
// Authorization header field
rule.HeaderClaim(ruleset.AuthorizationRule),
// #2 "must-revalidate" and/or
// "s-maxage" response directives are not allowed to be served stale
// (Section 4.2.4) by shared caches. In particular, a response with
// either "max-age=0, must-revalidate" or "s-maxage=0" cannot be used to
// satisfy a subsequent request without revalidating it on the origin
// server.
rule.HeaderClaim(ruleset.MustRevalidateRule),
rule.HeaderClaim(ruleset.ZeroMaxAgeRule),
// #3 custom No-Cache header used inside this library
// for BOTH request and response (after get-cache action)
rule.Header(ruleset.NoCacheRule, ruleset.NoCacheRule),
)
// NoCache disables the cache for a particular request,
// can be used as a middleware or called manually from the handler.
func NoCache(ctx *context.Context) {
ctx.Header(cfg.NoCacheHeader, "true")
}