yslow dit que les étiquettes sont mal configurées. comment configurer correctement etags sur IIS7?

20

en exécutant ySlow sur un site Web que je soutiens, j'ai remarqué qu'il a été signalé que les étiquettes sont mal configurées pour les images du site (par exemple * .jpg, * .png, * .gif). Quelqu'un peut-il m'aider à expliquer ce que je dois faire pour que IIS7 émette correctement ces étiquettes?

MikeJ
la source

Réponses:

7

La réponse acceptée par Farseeker 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 Stack Overflow pour la même question .

nickh
la source
Cette réponse n'est plus correcte / pertinente. Vous pouvez modifier les ETags dans iis 7+ en ajoutant une règle sortante comme indiqué dans ma réponse serverfault.com/a/528346/78230
AndrewPK
12

Les étiquettes sont OK tant que vous ne diffusez pas de contenu à partir de plusieurs serveurs. Si vous ne servez qu'à partir d'un seul serveur, laissez-les là. Ils ne font pas de mal. Et si vous ne voulez pas que YSlow s'en plaigne, cliquez sur le bouton Modifier à côté de l' élément de sélection des ensembles de règles et modifiez le profil YSlow (V2). Décochez simplement l'option "Configurer les balises d'entité (Etags)".

Ionuț G. Stan
la source
7
+1 YSlow se plaint que beaucoup de choses n'affectent pas les sites Web "simples mortels". (Non YSlow, je n'ai pas et n'ai pas besoin d'un CDN. Veuillez arrêter de pleurnicher déjà.)
Gerald Combs
Vrai sur le changement de jeu de règles.
MikeJ
11

YSlow ne se plaint pas qu'ils se trompent (même si c'est ce qu'il dit), mais se plaint qu'ils ne sont pas nécessaires. La seule façon de faire taire YSlow à ce sujet est de les désactiver.

La bonne chose est que je l'ai fait moi-même plus tôt dans la journée!

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

ETag

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

""

(c'est deux doubles guillemets)

Et les ETags sont partis!

Mark Henderson
la source
Comme d'autres le soulignent, vous ne devez supprimer les ETags que si vous savez que vous en avez besoin; dans de nombreux cas, ce ne sera pas le cas.
Bobby Jack
1
C'est peut-être le cas, mais le fait est que la réponse répond correctement à la question.
Mark Henderson
1
La question demandait «comment obtenir IIS7 pour émettre correctement ces étiquettes?». Votre réponse a été de cesser complètement d'émettre des ETags, ce qui est probablement un problème de performances, et probablement inutile (il n'y avait aucune mention d'utilisation de CDN dans la question).
Bobby Jack
2
@Bobby: l'OP demande implicitement "comment puis-je obtenir IIS7 pour émettre ces étiquettes correctement comme défini par YSlow ?". et la seule configuration "correcte", en ce qui concerne YSlow, est de les désactiver.
Kip
1
@Kip, non, la partie implicite est implicite, et vous ne pouvez pas la deviner. Mais en supposant que l'OP est une personne raisonnable, il a probablement voulu dire "selon YSlow, la configuration semble sous-optimale, comment puis-je la rendre optimale?" - Et puis cette réponse est un peu drôle. C'est comme "pourquoi mon test unitaire se plaint-il?" - "Supprimez simplement le test unitaire, et il ne se plaindra plus!"
chiccodoro
3

Voir une question StackOverflow similaire .

SirStan
la source
3

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 remplacera 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 remplace tout ce qui est défini juste avant qu'il ne soit renvoyé à l'utilisateur. Cette règle sortante proposée correspond à toute variable de serveur nommée RESPONSE_ETagtant que la valeur de RESPONSE_ETaga un ou plusieurs caractères et réécrit la valeur en une chaîne vide.

AndrewPK
la source
2

Veuillez consulter la réponse à l'en- tête de réponse Set Server dans IIS7 pour une solution partielle. Oui, une solution complète serait vraiment sympa, mais je prendrai ce que je peux obtenir.

jerhewet
la source
1

Mieux vaut utiliser ceci:

<outboundRules>
  <rule name="Remove ETag">
    <match serverVariable="RESPONSE_ETag" pattern="(.*)\:(.*)" />
    <action type="Rewrite" value="{R:1}" />
  </rule>
</outboundRules>
user197693
la source
3
Bienvenue dans Server Fault! Bien que les octets magiques soient certainement agréables, c'est génial pour les autres personnes qui le lisent si vous expliquez pourquoi c'est correct.
Falcon Momot du