2014-05-13 4 views
1

Existe-t-il un moyen pour que Varnish génère un ETag pour une réponse backend qu'il reçoit et l'ajoute à la réponse? Je préférerais avoir toute la logique ETag dans Varnish au lieu de la configurer individuellement pour tous mes nœuds backend. J'utilise Varnish 4.0.0.Est-ce que Varnish peut générer des ETags?

Répondre

1

Les étiquettes ne sont actuellement pas implémentées dans le vernis (see the wiki).

0

Vous pouvez créer l'en-tête etag et sa valeur dans VCL si vous le souhaitez.

sub vcl_backend_response { 
    if (!beresp.http.Etag) { 
     set beresp.http.Etag = "W/foo"; 
    } 
} 

Le problème principal ici est de savoir comment faire en sorte que l'Etag reflète le corps de l'objet. Vous devrez savoir comment votre application fonctionne pour le faire en toute sécurité. Une approche pourrait consister à alimenter l'en-tête de réponse Date avec l'URL de libvmod-digest et à définir la sortie de hachage comme Etag. En Varnish 4.0.0 vous avez (le wiki est obsolète) support pour If-Modified-Since/If-None-Correspondre au backend, donc si vous choisissez de le faire en VCL n'oubliez pas de le filtrer dans vcl_backend_fetch vous ne confondez pas votre backend.

En général, je déconseille de le faire dans VCL. L'ajouter sur le backend suffit généralement à activer un module. Le changement réel dans VCL est simple, mais c'est l'une des parties difficiles de HTTP et il est facile de se tromper.