


























An ETag (Entity Tag) is an HTTP response header that identifies a version of a resource. This allow efficient caching by providing the client a method to check for a new version before downloading.
In general, the ETag is based on the file’s last modification time and size and usually handled by the reverse-proxy. This is called the weak ETag/ weak validation.
Alternative, there is a strong or content-based Etag that hashes the resources and provides a new version with every change. In most cases, the application has to manage the Etag.
Weak ETag headers can have the prefix W/ - this is optional and often only displayed with the initial 200 HTTP response and not the 304 HTTP response.

More information in the RFC9110 8.8.1 - Weak versus Strong.
Enabling (weak) ETags in nginx is simple - add the following config to the http, server or location block to enable ETag headers.
[...]
etag on;
add_header Cache-Control "no-cache" always;
[...]
The config can be overwritten in a more specific block, in case you want to change the caching for images or other resources.
Check syntax with sudo nginx -t and reload the nginx config.
That is it.
In this article we are going to do some testing with curl. The ETag header can be seen in the browser dev tools as well.
curl -I https://ittavern.com
HTTP/2 200
server: nginx
date: Mon, 20 Oct 2025 15:42:14 GMT
content-type: text/html
content-length: 20665
last-modified: Sat, 18 Oct 2025 20:55:34 GMT
vary: Accept-Encoding
etag: "68f3fec6-50b9"
[...]
This ETag won't change as long as the size (content-length) or time of last modification (last-modified) of the resources changes.
We now can check the resource again with the ETag to check for changes.
curl -H 'If-None-Match: "68f3fec6-50b9"' -I https://ittavern.com
HTTP/2 304
server: nginx
date: Mon, 20 Oct 2025 16:24:47 GMT
last-modified: Sat, 18 Oct 2025 20:55:34 GMT
etag: "68f3fec6-50b9"
[...]
The 304 HTTP code stands for Not Modified.
This is how it looks in the browser

此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。