yslow sagt, etags seien falsch konfiguriert. Wie konfiguriere ich etags richtig auf IIS7?

20

Wenn ySlow auf einer von mir unterstützten Website ausgeführt wird, wurde gemeldet, dass die etags für die Site-Images falsch konfiguriert sind (z. B. * .jpg, * .png, * .gif). Kann mir jemand erklären, was ich tun muss, damit IIS7 diese Tags korrekt ausgibt?

MikeJ
quelle

Antworten:

7

Die akzeptierte Antwort von Farseeker funktioniert nicht. Ich habe dies in IIS 7.0.6000.16386 unter Windows Server 2008 Standard SP 2 getestet.

Zur gleichen Frage siehe Jeff Atwoods Kommentar zu Stack Overflow .

nickh
quelle
Diese Antwort ist nicht mehr korrekt / relevant. Sie können ETags in iis 7+ ändern, indem Sie eine ausgehende Regel hinzufügen, wie in meiner Antwort serverfault.com/a/528346/78230
AndrewPK
12

Etags sind in Ordnung, solange Sie keine Inhalte von mehreren Servern bereitstellen. Wenn Sie nur von einem Server aus bedienen, lassen Sie diese dort. Sie tun nicht weh. Wenn Sie nicht möchten, dass sich YSlow darüber beschwert, klicken Sie auf die Schaltfläche Bearbeiten neben dem Element Regelsätze und bearbeiten Sie das YSlow (V2) -Profil. Deaktivieren Sie einfach die Option "Entity-Tags (Etags) konfigurieren".

Ionuț G. Stan
quelle
7
+1 YSlow beschwert sich über eine Menge Dinge, die sich nicht auf "rein sterbliche" Websites auswirken. (Nein YSlow, ich habe und brauche keine CDN. Bitte hör schon auf zu jammern.)
Gerald Combs
Wahr in Bezug auf die Regelsatzänderung.
MikeJ
11

YSlow beschwert sich nicht darüber, dass sie falsch liegen (auch wenn es so steht), sondern darüber, dass sie nicht gebraucht werden. Die einzige Möglichkeit, YSlow dazu zu bringen, den Mund zu halten, besteht darin, sie zu deaktivieren.

Das Gute ist, ich habe das heute gerade selbst gemacht!

Öffnen Sie Ihren IIS-Manager, klicken Sie auf den Server und wechseln Sie zu HTTP Response Headers. Klicken Sie auf die Schaltfläche "Hinzufügen ..." und geben Sie unter Name Folgendes ein:

ETag

(Groß- und Kleinschreibung beachten). Geben Sie unter Wert ein

""

(das sind zwei doppelte Anführungszeichen)

Und eTags beginnen!

Mark Henderson
quelle
Wie bereits erwähnt, sollten Sie ETags nur entfernen, wenn Sie dies wissen. In vielen Fällen ist dies nicht der Fall.
Bobby Jack
1
Das mag der Fall sein, aber Tatsache ist, dass die Antwort die Frage richtig beantwortet.
Mark Henderson
1
Die Frage lautete: "Wie bringe ich IIS7 dazu, diese Tags korrekt auszugeben?". Ihre Antwort war, die Ausgabe von ETags ganz einzustellen, was eine mögliche Leistungseinbuße darstellt und wahrscheinlich unnötig ist (in der Frage wurde die Verwendung von CDN nicht erwähnt).
Bobby Jack
2
@Bobby: Das OP fragt implizit "Wie kann ich IIS7 dazu bringen, diese von YSlow definierten Etags korrekt auszugeben ?". und die einzige "richtige" Konfiguration, soweit es YSlow betrifft, besteht darin, sie zu deaktivieren.
Kip
1
@Kip, nein, der implizite Teil ist implizit und kann nicht erraten werden. Unter der Annahme, dass das OP eine vernünftige Person ist, wollte er wahrscheinlich sagen: "Laut YSlow scheint die Konfiguration suboptimal zu sein. Wie kann ich sie optimal gestalten?" - Und dann ist diese Antwort ein bisschen lustig. Es ist wie "Warum beschwert sich mein Unit-Test?" - "Löschen Sie einfach den Komponententest und er wird sich nicht mehr beschweren!"
Chiccodoro
3

Siehe eine ähnliche StackOverflow- Frage.

SirStan
quelle
3

In iis 6 können Sie einen benutzerdefinierten Header für 'ETag' = "" hinzufügen.

Fügen Sie in iis 7 eine ausgehende Umschreiberegel wie folgt hinzu:

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

IIS 7 überschreibt benutzerdefinierte Header und alle anderen Lösungen, die in verschiedenen anderen Antworten zum selben Problem vorgeschlagen wurden. Ausgehende Regeln sind das einzige Element, das zu funktionieren scheint, da es alle Einstellungen überschreibt, die unmittelbar vor der Rückgabe an den Benutzer festgelegt wurden. Diese vorgeschlagene ausgehende Regel entspricht einer beliebigen Servervariable mit dem Namen RESPONSE_ETag, solange der Wert von RESPONSE_ETagmindestens ein Zeichen enthält, und schreibt den Wert so, dass er eine leere Zeichenfolge ist.

AndrewPK
quelle
2

Eine Teillösung finden Sie in der Antwort zum Festlegen des Serverantwortheaders in IIS7 . Ja, eine Komplettlösung wäre wirklich nett, aber ich nehme, was ich bekommen kann.

Jerhewet
quelle
1

Nutze dies besser:

<outboundRules>
  <rule name="Remove ETag">
    <match serverVariable="RESPONSE_ETag" pattern="(.*)\:(.*)" />
    <action type="Rewrite" value="{R:1}" />
  </rule>
</outboundRules>
user197693
quelle
3
Willkommen bei Server Fault! Während die magischen Bytes sicherlich nett sind, ist es für andere Leute, die es lesen, fantastisch, wenn Sie erklären, warum dies richtig ist.
Falcon Momot