yslowは、etagの設定が間違っていると言います。IIS7でetagsを適切に構成する方法は?


20

私がサポートするウェブサイトでySlowを実行すると、サイトの画像(例:* .jpg、*。png、*。gif)のetagsが誤って設定されていることが報告されました。IIS7がこれらのetagを正しく発行するために私がしなければならないことを誰でも説明できますか?

回答:


7

Farseekerが受け入れた回答は機能しません。これをWindows Server 2008 Standard SP 2上のIIS 7.0.6000.16386でテストしました。

同じ質問については、スタックオーバーフローに関するジェフアトウッドのコメント参照してください。


この答えはもはや正しい/関連性がありません。あなたは私の答えの中に見られるように、アウトバウンドルールを追加することにより、IIS 7+でてETagを変更することができますserverfault.com/a/528346/78230
AndrewPK

12

複数のサーバーからコンテンツを提供しない限り、Etagは問題ありません。1つのサーバーからのみサービスを提供する場合は、そのままにしておきます。けがをしません。YSlowに文句を言わせたくない場合は、ルールセット選択要素の近くにある[ 編集 ]ボタンをクリックして、YSlow(V2)プロファイルを編集します。[エンティティタグ(Etags)の構成]オプションをオフにします。


7
+1 YSlowは、多くのことが「単なる致命的な」Webサイトに影響しないことについて不満を述べています。(YSlowはありません。CDNはありませんし、必要ありません。すでに泣き言をやめてください。)
ジェラルドコームズ

ルールセットの変更について真です。
MikeJ

11

YSlowは、彼らが間違っていると不平を言っているわけではありません(それが言っていることですが)が、不必要だと不平を言っています。これについてYSlowを黙らせる唯一の方法は、それらを無効にすることです。

良いことは、今日これを自分でやったことです!

IISマネージャーを開き、サーバーをクリックして、HTTP応答ヘッダーに移動します。[追加...]ボタンをクリックし、名前の下に次のように入力します。

ETag

(大文字と小文字を区別)。値の下に、入力します

""

(つまり、2つの二重引用符)

そして、ETagsはなくなりました!


他の人が指摘しているように、必要があるとわかっている場合にのみETagを削除する必要があります。多くの場合、これは当てはまりません。
ボビージャック

1
そうかもしれませんが、問題の事実は、答えが質問に正しく答えることです。
マークヘンダーソン

1
質問は、「IIS7にこれらのetagを正しく発行させるにはどうすればよいですか?」あなたの答えは、ETagの発行を完全に停止することでした。これは、パフォーマンスに影響する可能性があり、おそらく不必要です(質問にはCDNの使用に関する言及はありませんでした)。
ボビージャック

2
@Bobby:OPは暗黙的に「YSlowで定義されているようにIIS7にこれらのetagを正しく発行させるにはどうすればよいですか?」YSlowに関する限り、唯一の「正しい」構成はそれらを無効にすることです。
キップ

1
@Kip、いいえ、暗黙の部分は暗黙的であり、推測することはできません。しかし、OPが合理的な人物であると仮定して、彼はおそらく「YSlowによると、構成は最適ではないようです。どうすれば最適化できますか?」-そして、この答えは少しおかしいです。「なぜユニットテストに不満があるのですか?」-「単体テストを削除するだけで、文句はもう言えません!」
-chiccodoro


3

iis 6では、 'ETag' = ""のカスタムヘッダーを追加できます

iis 7では、次のように送信書き換えルールを追加します。

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

IIS 7は、カスタムヘッダー、および同じ問題に関する他のさまざまな回答で提案されている他のすべてのソリューションを上書きします。アウトバウンドルールは、ユーザーに返される直前に設定されたものを上書きするため、機能すると思われる唯一のアイテムです。この提案されたアウトバウンドルールRESPONSE_ETagは、の値にRESPONSE_ETag1つ以上の文字が含まれている限り、指定されたサーバー変数と一致し、値を空の文字列に書き換えます。



1

これを使用する方が良い:

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

3
サーバー障害へようこそ!魔法のバイトは確かに素晴らしいですが、なぜこれが正しいのかを説明すれば、それを読んでいる他の人にとって素晴らしいです。
ファルコンモモット
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.