Quand utiliser et ne pas utiliser ETags


9

Je regardais simplement notre site sur WebPageTest.org et l'une de leurs recommandations pour accélérer un site Web est:

Les en-têtes ETag ne doivent généralement pas être utilisés sauf si vous avez une raison explicite d'en avoir besoin

Je me demandais ce que cela signifie. Cela signifie-t-il que le contenu statique que vous savez ne changera pas ne devrait pas en avoir, ou cela signifie-t-il que le contenu que vous savez changer régulièrement ne devrait pas en avoir, ou cela signifie-t-il que vous ne devriez pas les utiliser généralement sauf si vous en avez un besoin spécifique.

Si c'est le dernier, quel est le bon moment pour les utiliser? Merci pour toute aide.

Réponses:


8

Les ETags sont une alternative (mais peuvent être utilisés en combinaison avec) "Last-Modified-Time" afin de déterminer la validation du cache.

Le client peut envoyer une condition préalable telle que des correspondances if ou if-none-based sur la base de l'ETag. Ce n'est pas seulement pour les requêtes GET (c'est ce que fait webpagetest.org), vous pouvez utiliser la "mise à jour opportuniste" afin qu'une requête PUT ait une condition préalable et n'effectue pas l'opération de mise à jour si la ressource a été mise à jour depuis que l'ETag a été dernière acquisition.

En termes simples: vous appuyez sur modifier sur une page de votre CMS, votre ami clique sur modifier sur une page de votre CMS, votre ami effectue sa modification et enregistre et enfin vous appuyez sur enregistrer - sans en-tête HTTP ETag ou Content-MD5 dont vous auriez besoin pour réinventer la roue pour éviter les problèmes (comme vous essuyez les modifications de vos amis), la solution fait déjà partie du protocole HTTP et il est donc logique de simplement l'utiliser.

En général, je suis d'accord avec AOL (qui gère webpagetest.org) sur leur conseil "taille unique" - il est préférable de ne pas obstruer les en-têtes HTTP avec des chaînes cryptiques (les ETags ne sont généralement pas jolis ou lisibles par l'homme) quand une seconde de différence ( que Last-Modified-Time peut détecter) fera l'affaire pour le travail en cours.

Si une page est mise à jour plusieurs fois par seconde et que vous avez absolument besoin que la dernière version la plus précise soit affichée, vous pouvez essayer des solutions autres que HTTP GET ou simplement utiliser des ETags.

Faites attention à ce que vos ETags n'incluent pas par système de fichiers, par changement de configuration de serveur, etc. des informations (comme les inodes qui sont par défaut sur Apache) sinon vous aurez des problèmes quand il y a deux serveurs (les ETags de chacun ne correspondront pas).


C'est bon. Il y a un exemple dont je ne suis pas sûr: si vous avez plusieurs versions de contenu sur un seul URI (comme une version mobile ou Internet Explorer), les ETags peuvent être utilisés pour rechercher dans CHAQUE version une correspondance (d'où son nom si- aucune correspondance ne correspond pas si elle ne correspond pas) - en fonction de la personne à qui vous demandez, il existe différentes réponses (par exemple, ne pas avoir d'URI permanent pour plusieurs représentations, etc.).
Metalshark

7

Pour paraphraser l'excellente évaluation de Coding Horror du plugin YSlow Firebug (qu'il semble que WebPageTest.org utilise comme base pour leur évaluation):

"Yahoo est l'un des sites Web les plus fréquentés au monde - ses problèmes ne sont probablement pas les vôtres."

Si vous ne traitez pas chaque jour des millions d'unités uniques sur votre réseau à charge équilibrée, il y a de fortes chances que les suggestions fournies ne soient pas toutes les bonnes options lors de l'optimisation de votre site.


J'apprécie le commentaire, mais vous vous trompez. Steve Sounders explique ici: stevesouders.com/blog/2010/09/07/webpagetest-org-and-page-speed (Il est un grand partisan d' améliorations utiles - c'est-à-dire pas seulement des améliorations qui fonctionneront pour Google.) Notre site est certainement assez grand pour ressentir une augmentation de la vitesse de telles améliorations (et a déjà).
Django Reinhardt

2
L'extension yslow firebug inclut désormais un test pour les petits sites qui est beaucoup plus réaliste pour la plupart des sites.
John Conde

1
@Django Reinhardt - J'ai reformulé ma réponse, il est vrai que la plupart des suggestions sont valables pour n'importe quel site, mais ETags en particulier est controversé parce que, dans le cas de Y!, La fonctionnalité entre en conflit avec l'équilibrage de charge
danlefree

Le lien que vous avez fourni avait un lien vers la description de Yahoo des ETags ( developer.yahoo.com/performance/rules.html#etags ) qui répond bien à mes questions. (Oui, il serait probablement préférable pour nous de ne pas servir ETags.) Merci.
Django Reinhardt

1
@Django: Si vous avez plusieurs serveurs, les ETags peuvent être un problème. Cependant, tant que le même fichier renvoie toujours le même ETag, alors tout va bien. Voir aussi: webmasters.stackexchange.com/questions/1459/…
DisgruntledGoat
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.