yslow dice che gli etags sono configurati male. come configurare correttamente etags su IIS7?


20

eseguendo ySlow su un sito Web che supporto, ho notato che riportava che gli etag sono configurati in modo errato per le immagini del sito (ad esempio * .jpg, * .png, * .gif). Qualcuno può aiutare a spiegare cosa devo fare per ottenere che IIS7 emetta correttamente questi marchi?

Risposte:



12

Gli Etag sono OK fintanto che non si offrono contenuti da più server. Se servi solo da un server, lasciali lì. Non fanno male. E se non vuoi che YSlow si lamenti di loro, fai clic sul pulsante Modifica accanto all'elemento di selezione Set di regole e modifica il profilo YSlow (V2). Deseleziona l'opzione "Configura tag entità (Etags)".


7
+1 YSlow si lamenta di molte cose che non riguardano i siti Web "semplici mortali". (No YSlow, non ho e non ho bisogno di un CDN. Per favore, smetti già di lamentarti.)
Gerald Combs

Vero riguardo alla modifica del set di regole.
MikeJ,

11

YSlow non si lamenta del fatto che siano sbagliati (anche se è quello che dice), ma si lamenta che non sono necessari. L'unico modo per convincere YSlow a tacere a riguardo è disabilitarli.

Il bello è che l'ho fatto da solo oggi prima!

Apri il tuo gestore IIS, fai clic sul server e vai a Intestazioni di risposta HTTP. Fai clic sul pulsante "Aggiungi ..." e, sotto il nome, inserisci:

ETag

(che tiene conto del maiuscolo o minuscolo). In Valore, immettere

""

(ecco due doppie virgolette)

E ETags ha iniziato!


Come altri sottolineano, dovresti rimuovere ETags solo se sai che è necessario; in molti casi, non sarà così.
Bobby Jack,

1
Questo può essere il caso, ma il fatto è che la risposta risponde correttamente alla domanda.
Mark Henderson

1
La domanda si è posta "come posso ottenere IIS7 per emettere correttamente questi marchi?". La tua risposta è stata quella di smettere del tutto di emettere ETag, il che è un possibile successo prestazionale e probabilmente non necessario (non si parlava dell'uso della CDN nella domanda).
Bobby Jack,

2
@Bobby: l'OP sta implicitamente chiedendo "come posso ottenere IIS7 per emettere questi etags correttamente come definito da YSlow ?". e l'unica configurazione "corretta", per quanto riguarda YSlow, è disabilitarli.
Kip

1
@Kip, no, la parte implicita è implicita e non puoi indovinarla. Ma supponendo che l'OP sia una persona ragionevole, probabilmente voleva dire "secondo YSlow la configurazione sembra essere non ottimale, come posso renderla ottimale?" - E poi questa risposta è un po 'divertente. È come "perché il mio test unitario si lamenta?" - "Elimina il test unitario e non si lamenterà più!"
Chiccodoro,


3

In iOS 6, puoi aggiungere un'intestazione personalizzata per 'ETag' = ""

In iOS 7, aggiungi una regola di riscrittura in uscita come segue:

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

IIS 7 sovrascriverà le intestazioni personalizzate e tutte le altre soluzioni proposte in varie altre risposte relative allo stesso problema. Le regole in uscita sono l'unico elemento che sembra funzionare poiché sovrascrive tutto ciò che è impostato appena prima che venga restituito all'utente. Questa proposta di regola in uscita corrisponde a qualsiasi variabile del server denominata RESPONSE_ETagpurché il valore di RESPONSE_ETagabbia uno o più caratteri e riscriva il valore in una stringa vuota.



1

Meglio usare questo:

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

3
Benvenuti in Server Fault! Mentre i byte magici sono certamente belli, è fantastico per le altre persone che lo leggono se spieghi perché questo è corretto.
Falcon Momot,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.