Using the Endpoint Caching middleware with Tyk Classic APIs
Last updated: 8 minutes read.
The Endpoint Caching middleware allows you to perform selective caching for specific endpoints rather than for the entire API, giving you granular control over which paths are cached.
When working with Tyk Classic APIs the middleware is configured in the Tyk Classic API Definition. You can do this via the Tyk Dashboard API or in the API Designer.
If you’re using the newer Tyk OAS APIs, then check out the Tyk OAS page.
If using Tyk Operator please refer to section configuring the middleware in the Tyk Operator.
Configuring the middleware in the Tyk Classic API Definition
When using the Tyk Classic API Definition, there are two options for endpoint caching - simple and advanced.
The simple option works with the API-level cache and allows you to select which endpoints are cached, but relies upon the cache timeout (refresh) configured at the API-level. It will cache all responses received from the endpoint regardless of the HTTP response code for all safe requests.
The advanced option allows you to cache more selectively, giving control over the HTTP response codes to be cached, a per-endpoint cache timeout and also the possibility of caching responses only to requests containing specific data in the request body.
Simple endpoint cache
To enable the simple middleware you must add a new cache
object to the extended_paths
section of your API definition. The cache
object is a list of endpoints for which you wish to cache all safe requests.
In the API-level cache_options
you must enable caching and configure the timeout whilst ensuring that the option to cache all safe requests is disabled.
The cache_options
object has the following configuration:
enable_cache
: set totrue
to enable caching for this APIcache_all_safe_requests
: set tofalse
to allow selective caching per-endpointcache_timeout
: set to the refresh period for the cache (in seconds)
For example:
|
|
In this example, the endpoint caching middleware has been configured to cache all safe requests to two endpoints (/widget
and /fish
) with a cache refresh period of 60 seconds.
Advanced endpoint cache
For ultimate control over what Tyk caches, you should use the advanced configuration options for the per-endpoint cache. You can separately configure, for each HTTP method for an endpoint:
- an individual cache refresh (timeout)
- a list of HTTP response codes that should be cached
- a pattern match to cache only requests containing specific data in the request body
To enable the advanced middleware you must add a new advance_cache_config
object to the extended_paths
section of your API definition.
In the API-level cache_options
you must enable caching and ensure that the option to cache all safe requests is disabled. The timeout that you set here will be used as a default for any endpoints for which you don’t want to configure individual timeouts.
The advance_cache_config
object has the following configuration:
path
: the endpoint pathmethod
: the endpoint methodtimeout
: set to the refresh period for the cache (in seconds)cache_response_codes
: HTTP response codes to be cached (for example200
)cache_key_regex
: pattern match for selective caching by body value
For example:
|
|
In this example the endpoint caching middleware has been configured to cache requests to two endpoints (/widget
and /fish
) as follows:
endpoint | HTTP response codes to cache | cache refresh timeout | body value regex |
---|---|---|---|
POST /widget |
200 | 10 seconds | none |
GET /fish |
200, 300 | 60 seconds (taken from cache_options ) |
shark |
Configuring the middleware in the API Designer
You can use the API Designer in the Tyk Dashboard to configure the endpoint caching middleware for your Tyk Classic API by following these steps.
Simple endpoint cache
To enable and configure the simple endpoint cache, follow these instructions:
Step 1: Configure the API level caching options
From the Advanced Options tab configure the cache as follows:
- Enable caching to enable the cache middleware
- Cache timeout to configure the timeout (in seconds) for cached requests
- Cache only these status codes is a list of HTTP status codes that should be cached, remember to click Add after entering each code to add it to the list
- Cache all safe requests ensure that this is not selected, otherwise the responses from all endpoints for the API will be cached
Step 2: Add an endpoint for the path and select the plugin
From the Endpoint Designer add an endpoint that matches the path for which you want to cache responses. Select the Cache plugin.
Step 3: Save the API
Use the save or create buttons to save the changes and activate the middleware.
Advanced endpoint cache
To enable and configure the advanced endpoint cache, follow these instructions:
Step 1: Configure the API level caching options
From the Advanced Options tab configure the cache as follows:
- Enable caching to enable the cache middleware
- Cache timeout to configure the default timeout (in seconds) for any endpoints for which you don’t want to configure individual timeouts
- Cache only these status codes leave this blank
- Cache all safe requests ensure that this is not selected, otherwise the responses from all endpoints for the API will be cached
Step 2: Add an endpoint for the path and select the plugin
From the Endpoint Designer add an endpoint that matches the path for which you want to cache responses. Select the Advanced Cache plugin.
Step 3: Configure the Advanced Cache plugin
Set the timeout and HTTP response codes for the endpoint. If you don’t need to set a specific timeout for an endpoint you can leave this blank and Tyk will use the cache timeout configured at the API level.
Note
Body value match or request selective caching is not currently exposed in the Dashboard UI, so it must be configured through either the raw API editor or the Dashboard API.
Step 4: Save the API
Use the save or create buttons to save the changes and activate the middleware.
Configuring the middleware in the Tyk Operator
You can use Tyk Operator to configure the endpoint caching middleware for your Tyk Classic API by following these steps.
Simple endpoint cache
Configuring simple endpoint caching in Tyk Operator is similar to the process for a Tyk Classic API Definition. A list of endpoints for which you wish to cache safe requests should be configured within the cache
list in the extended_paths
section.
In the API-level cache_options
object, you must enable caching by setting enable_cache
to true and configure the cache refresh period by setting a value for the cache_timeout
in seconds. To allow selective caching per endpoint you should also set cache_all_safe_requests
to false
.
|
|
Advanced endpoint cache
Advanced caching with Tyk Operator is a similar process to that for configuring the advanced caching middleware in the Tyk Classic API Definition.
To enable the advanced middleware you must add a new advance_cache_config
object to the extended_paths
section of your API definition.
This allows you to configure caching per endpoint. For each endpoint, it is possible to specify the endpoint path, method, list of response codes to cache, cache timeout and a cache key regular expression. The cache key regular expression represents a pattern match to cache only requests containing specific data in the request body
For example:
|
|
In this example the endpoint caching middleware has been configured to cache requests for the /anything
endpoint as follows:
endpoint | HTTP response codes to cache | cache refresh timeout | body value regex |
---|---|---|---|
GET /anything |
200 | 30 seconds (taken from cache_options ) |
none |