Add caching to improve performance in Azure API Management

Operations in API Management can be configured for response caching. Response caching can significantly reduce API latency, bandwidth consumption, and web service load for data that does not change frequently.

This guide shows you how to add response caching for your API and configure policies for the sample Echo API operations. You can then call the operation from the developer portal to verify caching in action.

Note

For information on caching items by key using policy expressions, see Custom caching in Azure API Management.

Prerequisites

Before following the steps in this guide, you must have an API Management service instance with an API and a product configured. If you have not yet created an API Management service instance, see Create an API Management service instance in the Get started with Azure API Management tutorial.

Configure an operation for caching

In this step, you will review the caching settings of the GET Resource (cached) operation of the sample Echo API.

Note

Each API Management service instance comes preconfigured with an Echo API that can be used to experiment with and learn about API Management. For more information, see Get started with Azure API Management.

To get started, click Publisher portal in the Azure Portal for your API Management service. This takes you to the API Management publisher portal.

Publisher portal

Click APIs from the API Management menu on the left, and then click Echo API.

Echo API

Click the Operations tab, and then click the GET Resource (cached) operation from the Operations list.

Echo API operations

Click the Caching tab to view the caching settings for this operation.

Caching tab

To enable caching for an operation, select the Enable check box. In this example, caching is enabled.

Each operation response is keyed, based on the values in the Vary by query string parameters and Vary by headers fields. If you want to cache multiple responses based on query string parameters or headers, you can configure them in these two fields.

Duration specifies the expiration interval of the cached responses. In this example, the interval is 3600 seconds, which is equivalent to one hour.

Using the caching configuration in this example, the first request to the GET Resource (cached) operation returns a response from the backend service. This response will be cached, keyed by the specified headers and query string parameters. Subsequent calls to the operation, with matching parameters, will have the cached response returned, until the cache duration interval has expired.

Review the caching policies

In this step, you review the caching settings for the GET Resource (cached) operation of the sample Echo API.

When caching settings are configured for an operation on the Caching tab, caching policies are added for the operation. These policies can be viewed and edited in the policy editor.

Click Policies from the API Management menu on the left, and then select Echo API / GET Resource (cached) from the Operation drop-down list.

Policy scope operation

This displays the policies for this operation in the policy editor.

API Management policy editor

The policy definition for this operation includes the policies that define the caching configuration that were reviewed using the Caching tab in the previous step.

<policies>
    <inbound>
        <base />
        <cache-lookup vary-by-developer="false" vary-by-developer-groups="false">
            <vary-by-header>Accept</vary-by-header>
            <vary-by-header>Accept-Charset</vary-by-header>
        </cache-lookup>
        <rewrite-uri template="/resource" />
    </inbound>
    <outbound>
        <base />
        <cache-store caching-mode="cache-on" duration="3600" />
    </outbound>
</policies>
Note

Changes made to the caching policies in the policy editor will be reflected on the Caching tab of an operation, and vice-versa.

Call an operation and test the caching

To see the caching in action, we can call the operation from the developer portal. Click Developer portal in the top right menu.

Developer portal

Click APIs in the top menu, and then select Echo API.

Echo API

If you have only one API configured or visible to your account, then clicking APIs takes you directly to the operations for that API.

Select the GET Resource (cached) operation, and then click Open Console.

Open console

The console allows you to invoke operations directly from the developer portal.

Console

Keep the default values for param1 and param2.

Select the desired key from the subscription-key drop-down list. If your account has only one subscription, it will already be selected.

Enter sampleheader:value1 in the Request headers text box.

Click HTTP Get and make a note of the response headers.

Enter sampleheader:value2 in the Request headers text box, and then click HTTP Get.

Note that the value of sampleheader is still value1 in the response. Try some different values and note that the cached response from the first call is returned.

Enter 25 into the param2 field, and then click HTTP Get.

Note that the value of sampleheader in the response is now value2. Because the operation results are keyed by query string, the previous cached response was not returned.

Next steps