Other

#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 be caching-inbound.
  • handler.export <string> - The name of the exported type. Value should be CachingInboundPolicy.
  • 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 to true. Defaults to false.
  • 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 to 60.
  • 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.

Env Var

Read more about how policies work