How to Verify Your Website is Using Varnish Cache and Understand the Headers
Are you curious if your website is leveraging the power of Varnish Cache for improved performance? In this article, we will guide you through the process of verifying that Varnish Cache is in action and explain how to interpret the response headers to ensure everything is working correctly.
Setting Up Varnish Cache with Docker
First, let’s quickly set up Varnish Cache using Docker. Here’s a simple docker-compose.yaml
file to get you started:
version: "3"
services:
varnish:
image: varnish:stable
container_name: varnish
volumes:
- "./default.vcl:/etc/varnish/default.vcl"
ports:
- "80:80"
tmpfs:
- /var/lib/varnish:exec
environment:
- VARNISH_SIZE=2G
command: "-p default_keep=300"
depends_on:
- "httpd"
httpd:
image: httpd:latest
container_name: httpd
ports:
- "8080:80"
VCL Configuration
Create a default.vcl
file with the following content:
vcl 4.1;
backend default {
.host = "httpd";
.port = "80";
}
Launching the Services
Run the following command to start your services:
docker-compose up -d
Verifying Varnish Cache Usage
To verify that Varnish Cache is in action, we will use curl
to inspect the HTTP response headers.
Step 1: Make the Initial Request
Run this command to make an initial request to Varnish:
curl -I http://localhost
Expected Response Headers:
HTTP/1.1 200 OK
Date: Mon, 27 May 2024 09:18:39 GMT
Server: Apache/2.4.59 (Unix)
Last-Modified: Mon, 11 Jun 2007 18:53:14 GMT
ETag: "2d-432a5e4a73a80"
Content-Length: 45
Content-Type: text/html
X-Varnish: 32
Age: 0
Via: 1.1 varnish (Varnish/6.0)
Accept-Ranges: bytes
Connection: keep-alive
Understanding the Headers
- X-Varnish: The first number is the current request ID.
- Age: This header shows how long the object has been in the cache. An
Age: 0
indicates a cache MISS because the object was fetched from the backend. - Via: This indicates that the request passed through Varnish.
Step 2: Make the Same Request Again
Run the command again:
curl -I http://localhost
Expected Response Headers for Cache HIT:
HTTP/1.1 200 OK
Date: Mon, 27 May 2024 09:19:00 GMT
Server: Apache/2.4.59 (Unix)
Last-Modified: Mon, 11 Jun 2007 18:53:14 GMT
ETag: "2d-432a5e4a73a80"
Content-Length: 45
Content-Type: text/html
X-Varnish: 33 32
Age: 20
Via: 1.1 varnish (Varnish/6.0)
Accept-Ranges: bytes
Connection: keep-alive
Understanding the Headers
- X-Varnish: The first number is the current request ID, and the second number is the ID of the request that populated the cache.(number 1)
- Age: This header shows how long the object has been in the cache. An
Age: 0
indicates a cache MISS because the object was fetched from the backend. (number 2) - Via: This indicates that the request passed through Varnish.(number 3)
Additional Verification Steps
Inspect Full Headers and Body
You can use curl
to see the full headers and body of the response:
curl -v http://localhost
Check Varnish Logs
To get detailed logs, access the Varnish container and use varnishlog
:
docker-compose exec varnish bash
varnishlog
This command will provide detailed logs on how each request is handled, showing cache HITs and MISSes.
By following these steps, you can easily verify that your website is using Varnish Cache and understand how to interpret the response headers.
i hope this will help ,If you have any further questions or run into issues, don’t hesitate to reach out.
NHAILA Achraf
#varnish #cache #devsecops #devops #dockerswarm #swarm #cluster #datadog #azure #monitoring