Caching

Magento Commerce enables you to use caching in your environment. If you disable caching, Magento Commerce directly serves the files.

Set up caching

Enable caching in your Magento application’s .magento/routes.yaml as follows:

http://{default}/:
    type: upstream
    upstream: php:php
    cache:
        enabled: true
        headers: [ "Accept", "Accept-Language", "X-Language-Locale" ]
        cookies: ["*"]
        default_ttl: 60

Route-based caching

If you need fine-grained caching, you can set up caching rules for several routes separately as the following example shows:

http://{default}/:
  type: upstream
  upstream: php:php
  cache:
    enabled: true

http://{default}/path/:
  type: upstream
  upstream: php:php
  cache:
    enabled: false

http://{default}/path/more/:
  type: upstream
  upstream: php:php
  cache:
    enabled: true

The preceding example caches the following routes:

  • http://{default}/
  • http://{default}/path/more/
  • http://{default}/path/more/etc/

And the following routes are not cached:

  • http://{default}/path/
  • http://{default}/path/etc/

Regular expressions in routes are not supported.

Cache duration

The cache duration is determined by the Cache-Control response header value. If no Cache-Control header is in the response, we use the default_ttl key.

Cache key

To decide how to cache a response, Magento Commerce builds a cache key depending on several factors and store the response associated with this key. When a request comes with the same cache key, the response is reused. Its purpose is similar to the HTTP Vary header.

The parameters headers and cookies keys enable you to change this cache key.

The default value for these keys follows:

cache:
  enabled: true
  headers: ["Accept-Language", "Accept"]
  cookies: ["*"]

Cache attributes

We support the following attributes:

enabled

When set to true, enable the cache for this route. When set to false, disable the cache for this route.

headers

Defines on which values the cache key must depend.

For example, if the headers key is the following:

cache:
  enabled: true
  headers: ["Accept"]

Then Magento Commerce will cache a different response for each value of the Accept HTTP header.

cookies

The cookies key define on which values the cache key must depend.

For example:

cache:
  enabled: true
  cookies: ["value"]

The cache key depends on the value of the value cookie in the request.

A special case exists if the cookies key has the ["*"] value. This value means that any request with a cookie will bypass the cache. This is the default value.

You cannot use wildcards in the cookie name. You must either use a precise cookie name, or match all cookies with asterisk (*). SESS* or ~SESS are currently not valid values.

default_ttl

If the response does not have a Cache-Control header, the default_ttl key is used to define the cache duration, in seconds. The default value is 0, which means nothing is cached.