Question

Quelle est la bonne méthode pour générer etag par programme pour les pages Web, et cette pratique est-elle recommandée? Certains sites recommandent de désactiver etags, d’autres de les produire manuellement et d’autre part de laisser les paramètres par défaut actifs. Quelle est la meilleure solution?

Était-ce utile?

La solution

Les balises ETags vous aident lorsque vous utilisez un mécanisme de mise en cache en face de votre générateur de site Web. Les navigateurs eux-mêmes ne les utilisent pas, ils écoutent "(si) modifié depuis". ou " age " structure d'en-tête, autant que je sache.

Quoi qu'il en soit, en raison de sa nature simple, fournir un en-tête http avec un ETag ne pose aucun problème. J'ai entendu dire que de nombreux serveurs Web prennent simplement l'emplacement du fichier et son horodatage, puis effectuent un hachage md5 sur ces données.

À titre d’exemple, nous avons construit un etag simple mais efficace avec notre logiciel. Chaque " unité de contenu " (html, jpegs, gifs, etc.) dans notre logiciel a un identifiant unique et un numéro de version (c’est-à-dire qu’un jpeg a l’id "17" et la version "2", cela signifie qu’il a été modifié une fois). Ainsi, l'ETag est simplement la chaîne "id-version", ici: "17-2". Lors du prochain changement, il serait "17-3". afin que le cacher reconnaisse la modification, charge la nouvelle partie de contenu (une fois) complètement et la stocke dans son propre cache.

Mais vous pouvez probablement utiliser également l'URL et un horodatage (c'est-à-dire l'horodatage du fichier).

Autres conseils

Je recommande de générer un hachage du contenu, par exemple. md5 ($ content) .
En outre, pour éviter les collisions de hachage, vous pouvez ajouter, par exemple, l'identifiant de l'élément de contenu (si cela est approprié).

Eh bien, les ETags ont du sens lorsque vous comptez beaucoup sur la mise en cache. Ils constituent un excellent indicateur de l'état d'une ressource (par exemple une URL).

Par exemple, supposons que vous utilisiez une requête ajax pour extraire les derniers commentaires d'un utilisateur et que vous souhaitiez savoir s'il y avait de nouveaux commentaires. Modifier l'ETag pour alerter votre application de nouveau contenu est un moyen moins coûteux de vérifier cela.

Parce que si l'ETag est identique, vous pouvez conserver votre cache, mais le reconstruire sinon.

Les balises ETag ont également beaucoup de sens avec les API RESTful.

Pour ce qui est de sa génération, consultez le spec , je pense que tu peux faire presque tout ce que tu veux. Un horodatage, un hachage, ce qui a du sens pour vous / votre application.

Je viens d’activer YSlow et il s’est plaint d’Etags, alors j’ai fait une petite recherche. Le problème, selon le blog Yahoo (voir les commentaires). de plus, c’est que les implémentations ETags par défaut utilisent le numéro d’inode du fichier ou le numéro de révision ntfs, ou autre chose également, spécifique au serveur dans le cadre du hachage. Ceci, tout en étant rapide, empêche fondamentalement le même fichier d'être servi par 2 serveurs différents d'avoir le même etag et visse les navigateurs et les caches ou les équilibres de charge en aval.

La suggestion précédente consistant à utiliser un hachage MD5 est une bonne idée, même si vous devez éviter que cela ne devienne un problème de performances en soi. La mise en œuvre de ces suggestions reste à la discrétion du lecteur, bien qu’il me semble spontané que c’est le genre de chose que votre cadre pourrait être en mesure de gérer pour vous.

Pour ma part, comme je suis dans un environnement simple où l'horodatage du fichier sera plus que suffisant, je les ai simplement désactivés dans Apache en utilisant FileETag none dans mon fichier .htaccess. Cela ferme YSlow et devrait ramener les choses à la dernière date de modification du fichier.

En règle générale, les "sites" " Yahoo décourage leur utilisation, car certains serveurs Web par défaut ne créent pas automatiquement des ETAG fonctionnant dans des batteries de serveurs. (Ce qui est correct et précis de Yahoo à réclamer.)

Mais si vous avez un seul serveur Web, vous vous en tirez bien. Si ce n'est pas le cas, vous voudrez vérifier comment votre serveur Web gère cela et agit de manière appropriée.

Mufasa,

Yahoo (et YSlow) encouragent en fait leur utilisation, mais il convient de noter que les balises ETags générées automatiquement différeront d'un serveur à l'autre.

Je ne peux pas encore voter, je vais simplement dire que je suis d'accord avec la suggestion d'un hachage du chemin du fichier et de l'horodatage (ou du nom de la table + de la valeur du champ principal + de l'horodatage s'il est représenté par le contenu de la base de données).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top