#Caching Policy
Respond to matched incoming requests with cached content
#Configuration
The configuration shows how to configure the policy in the 'policies.json' document.
{ "name": "my-caching-inbound-policy", "policyType": "caching-inbound", "handler": { "export": "CachingInboundPolicy", "module": "$import(@zuplo/runtime)", "options": { "cacheHttpMethods": ["GET"], "expirationSecondsTtl": 60, "headers": "content-type", "statusCodes": [200, 201, 404] } } }json
#Policy Configuration
name
<string>
- The name of your policy instance. This is used as a reference in your routes.policyType
<string>
- The identifier of the policy. This is used by the Zuplo UI. Value should becaching-inbound
.handler.export
<string>
- The name of the exported type. Value should beCachingInboundPolicy
.handler.module
<string>
- The module containing the policy. Value should be$import(@zuplo/runtime)
.handler.options
<object>
- The options for this policy. See Policy Options below.
#Policy Options
The options for this policy are specified below. All properties are optional unless specifically marked as required.
cacheId
<string>
- Specifies an id or 'key' for this policy to store cache. This is useful for cache-busting. For example, set this property to an env var and if you change that env var value, you invalidate the cache.dangerouslyIgnoreAuthorizationHeader
<boolean>
- By default, the Authorization header is always considered in the caching policy. You can disable by setting this totrue
. Defaults tofalse
.headers
<string[]>
- The headers to be considered when caching. Defaults to[]
.cacheHttpMethods
<string[]>
- HTTP Methods to be cached. Valid methods are: GET, POST, PUT, PATCH, DELETE, HEAD. Defaults to["GET"]
.expirationSecondsTtl
<number>
- The timeout of the cache in seconds. Defaults to60
.statusCodes
<number[]>
- Response status codes to be cached. Defaults to[[200,206,301,302,303,404,410]]
.
#Using the Policy
#Cache-busting
If you need to support cache-busting on demand, we recommend applying a
cacheId
property based on an Environment Variable. Ensure all your cache
policies are using a cachedId based on a variable and then change that variable
(and trigger a redeploy) to clear the cache.
e.g.
{ "export": "CachingInboundPolicy", "module": "$import(@zuplo/runtime)", "options": { "cachedId": "$env(CACHE_ID)", // this is reading an env var "expirationSecondsTtl": 60, "dangerouslyIgnoreAuthorizationHeader": false, "headers": ["header_used_as_part_of_cache_key"] } }json
Then you would setup an env var for this, we recommend using the current date it
was set, e.g. 2023-07-05-11-57
and then simply change this value and trigger a
redeploy to bust your cache.
Read more about how policies work