2015-10-28 2 views
1

Donc, fondamentalement, je veux comprendre le fonctionnement de valeur de jeton ETag dans l'en-tête If-None-Match dans la demande.Comment un jeton Etag fonctionne-t-il dans GET conditionnel dans HTTP?

J'ai compris le fonctionnement de Si-modifie-depuis méthode GET conditionnelle. Quelqu'un peut-il expliquer en termes simples comment GET conditionnel fonctionne dans le cas d'un Etag avec If-None-Match condition?

Merci à l'avance :)

Répondre

1

Pour faire des demandes conditionnelles que vous utilisez If-None-Match passer un eTag ou If-Modified-Since en utilisant une date.

Un Etag est une valeur qui représente l'état d'une entité. Habituellement, c'est un hachage base64encoded. Le serveur peut attacher un en-tête HTTP Etag à la réponse lors de la demande d'une ressource, par exemple Etag représenterait l'état de la ressource. Ensuite, le client peut envoyer un Etag ou une collection d'Etags dans l'en-tête If-None-Match dans les demandes suivantes, afin que le serveur vérifie si l'état de la ressource demandée a changé, et si oui, il renvoie HTTP 200 avec la nouvelle représentation de ressource ou sinon HTTP 304 indiquant que la ressource n'a pas changé. Un Etag est considéré comme un validateur fort, alors If-None-Match aura la préférence sur If-Modified-Since.

Plus d'infos:

+0

il ne représente pas l'état d'une entité. Cela représente le contenu. Bien que la manière la plus précise de représenter ceci soit un hachage du contenu, cela est plutôt coûteux à calculer au moment de l'exécution, par conséquent la plupart des serveurs utilisent d'autres méthodes; apache/lighttpd utilise un ou plusieurs des fichiers inode, mtime et size, nginx uniquement la dernière heure et la dernière taille modifiées. Cela ajoute des complications sur un cluster. Si les requêtes conditionnelles ajoutent une valeur pour la plupart du trafic est discutable, cela n'aide certainement pas à implémenter une stratégie de mise en cache efficace pour changer régulièrement le contenu (sauf pour les très gros fichiers) – symcbean