web-dev-qa-db-fra.com

Yslow dit que Etags sont mal configurés. Comment configurer les etags correctement sur IIS7?

courir Yslow sur un site Web I Soutien, j'ai remarqué qu'il a signalé que les Etags sont mal configurés pour les images de site (par exemple ..jpg, * .png, * .gif). Quelqu'un peut-il aider à expliquer ce que je dois faire pour obtenir IIS7 émettre ces etags correctement?

20
MikeJ

La réponse acceptée de Farseker ne fonctionne pas. J'ai testé cela dans IIS 7.0.6000.16386 sur Windows Server 2008 Standard SP 2.

Voir le commentaire de Jeff Atwood sur le débordement de la pile pour la même question .

7
nickh

Les étagères sont ok aussi longtemps que vous ne servez pas de contenu à partir de plusieurs serveurs. Si vous ne servez que d'un serveur, laissez-les là-bas. Ils ne font pas mal. Et si vous ne voulez pas que Yslow se plaint d'eux, cliquez sur la touche EDIT près de la touche règles Sélectionnez Elément et modifiez le profil Yslow (v2). Décochez simplement l'option "Configurer les balises d'entité (Etags)" ".

12
Ionuț G. Stan

Yslow ne se plaint pas qu'ils ont tort (même si c'est ce qu'il dit), mais il se plaint de ne pas avoir besoin. Le seul moyen d'obtenir Yslow se taire à ce sujet est de les désactiver.

La bonne chose est que je viens de le faire moi-même plus tôt aujourd'hui!

Ouvrez votre IIS Manager, cliquez sur le serveur et accédez aux en-têtes de réponse HTTP. Cliquez sur le bouton "Ajouter ..." et sous Nom Entrée:

ETag

(sensible aux majuscules et minuscules). Sous valeur, entrez

""

(c'est deux citations doubles)

Et Etags Begone!

11
Mark Henderson

Voir une question similaire Stackoverflow question.

3
SirStan

Dans IIS 6, vous pouvez ajouter un en-tête personnalisé pour 'Etag' = ""

Dans IIS 7, ajoutez une règle de réécriture sortante comme suit:

<outboundRules>
  <rule name="Remove ETag">
    <match serverVariable="RESPONSE_ETag" pattern=".+" />
    <action type="Rewrite" value="" />
  </rule>
</outboundRules>

IIS 7 écrasera les en-têtes personnalisés et toutes les autres solutions proposées dans diverses autres réponses concernant le même problème. Les règles sortantes sont le seul élément qui semble fonctionner car il écrase tout ce qui est défini juste avant de renvoyer à l'utilisateur. Cette règle sortante proposée correspond à toute variable de serveur nommée RESPONSE_ETag tant que la valeur de RESPONSE_ETag a un ou plusieurs caractères et réécrire la valeur pour être une chaîne vide.

3
AndrewPK

Veuillez consulter la réponse à définir l'en-tête de réponse du serveur dans IIS7 pour une solution partielle. Oui, une solution complète serait vraiment agréable, mais je vais prendre ce que je peux obtenir.

2
jerhewet

Mieux utiliser ceci:

<outboundRules>
  <rule name="Remove ETag">
    <match serverVariable="RESPONSE_ETag" pattern="(.*)\:(.*)" />
    <action type="Rewrite" value="{R:1}" />
  </rule>
</outboundRules>
1
user197693