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?

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 .


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".


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!


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

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.



1

Nutze dies besser:

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

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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.