Cache clearing with Varnish

This topic discusses the basics of using Varnish as a web-caching accelerator for Adobe Commerce.

Varnish purging

According to Varnish documentation, “A purge is what happens when you pick out an object from the cache and discard it along with its variants.” A Varnish purge is similar to a cache clean command (or clicking Flush Magento Cache in the Admin).

In fact, when you clean, flush, or refresh the Commerce cache, Varnish purges as well.

After you have installed and configured Varnish to work with Commerce, the following actions can result in a Varnish purge:

  • Maintaining a website.

    For example, anything you do in the Admin in:

    • STORES > Settings > Configuration > GENERAL > General
    • STORES > Settings > Configuration > GENERAL > Currency Setup
    • STORES > Settings > Configuration > GENERAL > Store Email Addresses

    When Commerce detects such a change, a message displays informing you to refresh the cache.

  • Maintaining a store (for example, adding or editing categories, prices, products, and promotional pricing rules).

    Varnish is purged automatically when you perform any of these tasks.

  • Maintaining source code.

    You should refresh the cache and also periodically delete everything in the generated/code and generated/metadata directories. For information on refreshing the cache, see the next section.

Configure Commerce to purge Varnish

Commerce purges Varnish hosts after you configure Varnish hosts using the magento setup:config:set command.

You can use the optional parameter --http-cache-hosts parameter to specify a comma-separated list of Varnish hosts and listen ports. Configure all Varnish hosts, whether you have one or many. (Do not separate hosts with a space character.)

The parameter format must be <hostname or ip>:<listen port>, where you can omit <listen port> if it is port 80.

For example,

bin/magento setup:config:set --http-cache-hosts=,

You can then purge Varnish hosts when you refresh the Commerce cache (also referred to as cleaning the cache) in the Admin or using the command line.

To refresh the cache using the Admin, click SYSTEM > Tools > Cache Management, then click Flush Magento Cache at the top of the page. (You can also refresh individual cache types.)

To refresh the cache using the command line, you typically use the magento cache:clean <type> command as the file system owner.