web-dev-qa-db-fra.com

Comment configurer ETag sur Nginx

J'utilise Nginx comme serveur Web et je souhaite implémenter une méthode de mise en cache du navigateur afin que les utilisateurs conservent localement des copies de fichiers statiques inchangés et téléchargent uniquement les fichiers modifiés. L'une des propositions était d'utiliser l'horodatage des fichiers pour comprendre les fichiers modifiés et les actualiser uniquement, mais ce n'est pas possible dans mon cas car après chaque nouveau déploiement, une nouvelle version de l'application Web entière est créée et tous les horodatages des fichiers sont créés changement.

J'ai fait quelques recherches sur l'en-tête ETag, et cela semblait être une assez bonne solution, mais j'ai découvert que les Etags ne sont pas encore officiellement pris en charge par Nginx.

Existe-t-il un moyen d'implémenter les Etags sur Nginx ou d'autres solutions alternatives?

22
HanouaJ

Améliorez votre Nginx.

Syntax:     etag on | off;
Default:    etag on;

Context:    http, server, location

This directive appeared in version 1.3.3.

Enables or disables automatic generation of the “ETag” response header field for static resources.

Source: http://nginx.org/en/docs/http/ngx_http_core_module.html#etag

33
Tan Hong Tat

Toutes les versions récentes de Nginx (plus récentes que 1.3.3) les définiront automatiquement.

Par exemple:

location /img {
    root /path/to/public;
}

et les en-têtes de réponse Etag + Last-Modified les en-têtes seront retournés.

16
Martin Konecny