How to configure Varnish for Adobe Commerce (Magento)

Home / Blog / How to configure Varnish for Adobe Commerce (Magento)


To optimize Adobe Commerce (Magento) performance, configuring Varnish as the full-page cache (FPC) is critical. This guide covers setup, troubleshooting, and a comparative analysis of File, Redis, and Varnish caching systems.

Configuring Varnish for Adobe Commerce (Magento)

1. Installation and Basic Setup

  • Install Varnish on your server using OS-specific packages (e.g., sudo apt install varnish for Ubuntu). 
  • Configure Varnish to listen on port 80 and set the backend (e.g., Apache/Nginx) to port 8080:
# /etc/varnish/default.vcl
backend default {
  .host = "127.0.0.1";
  .port = "8080";
  .first_byte_timeout = 600s;
}

Restart Varnish: systemctl restart varnish.

2. Adobe Commerce Configuration

  1. Enable Varnish in Admin:
    • Navigate to Stores > Configuration > Advanced > System > Full Page Cache.
    • Select Varnish Cache as the caching application.
  2. Set TTL for public content (default: 86400) and configure backend host/port (e.g., localhost:8080).
  3. Export VCL File:
  • Click Export VCL for Varnish 6/7 in the Admin to generate a tailored default.vcl. 

Replace the existing VCL file and restart Varnish.

3. Validation

  • Verify Varnish is active by checking HTTP headers:
curl -I http://your-store.com | grep X-Varnish

Confirm the `/var/page_cache` directory remains empty after page requests.

Troubleshooting Common Varnish Issues

1. Cache Invalidation Challenges

  • Issue: Frequent cache purging due to product/category updates increases backend load.
  • Solution: Use Edge Side Includes (ESI) for dynamic blocks and optimize ban lists to reduce regex overhead.

2. 503 Service Unavailable Error

  • Cause: Backend timeout during heavy traffic.
    • Fix: Increase `.first_byte_timeout` in `default.vcl`:
backend default {
  .first_byte_timeout = 600s;
}

3. Cache Not Clearing

  • Manually clear the cache:
rm -rf /var/page_cache/*
systemctl restart varnish

Ensure cron jobs are running to automate cache cleanup.

Performance Comparison: File vs. Redis vs. Varnish

| Criterion              | File-Based FPC         | Redis FPC                | Varnish FPC                  |
|------------------------|------------------------|--------------------------|------------------------------|
| Speed                  | Slow (disk I/O)        | Fast (in-memory)         | Fastest (HTTP-level caching) |
| Scalability            | Poor for high traffic  | Moderate                 | Excellent (handles spikes)   |
| Resource Usage         | High disk usage        | Moderate RAM usage       | Low backend load             |
| Dynamic Content        | Limited ESI support    | Limited ESI support      | Advanced ESI support         |
| Setup Complexity       | Minimal (built-in)     | Moderate                 | High (requires VCL tuning)   |
| Magento Recommendation | Default for small stores | For session/data caching | Recommended for large stores |

Key Insights:

  • Varnish reduces server load by 50–80% compared to File/Redis, serving cached pages in <10ms. 
  • Redis complements Varnish by caching database queries and session data, accelerating cache-miss scenarios.
  • File caching becomes a bottleneck under concurrent traffic due to filesystem latency.

Best Practices for Optimal Performance

  1. Combine Varnish and Redis: Use Varnish for full-page caching and Redis for sessions/block caching.
  2. Monitor Grace Periods: Set grace = 300 in VCL to serve stale content during backend outages.
  3. Enable HTTP/2: Reduce latency by multiplexing requests over a single connection.

Regularly Profile Cache Hit Rates:

varnishstat -1 | grep hitrate

By leveraging Varnish, Adobe Commerce (Magento) stores achieve sub-second page loads even under heavy traffic, while Redis and File caching remain viable for smaller deployments. Proper configuration and monitoring ensure sustained performance gains and minimal downtime.


Written by X2Y.DEV
Adobe Commerce (Magento) Varnish Performance Optimization Tips

0%