yslow는 etags가 잘못 구성되었다고 말합니다. IIS7에서 전자 태그를 올바르게 구성하는 방법은 무엇입니까?


20

지원하는 웹 사이트에서 ySlow를 실행하면 사이트 이미지에 대해 etags가 잘못 구성된 것으로보고되었습니다 (예 : * .jpg, * .png, * .gif). 누구든지 IIS7에서 이러한 etag를 올바르게 발행하기 위해 어떻게해야하는지 설명 할 수 있습니까?

답변:


7

Farseeker가 수락 한 답변이 작동하지 않습니다. Windows Server 2008 Standard SP 2의 IIS 7.0.6000.16386에서 이것을 테스트했습니다.

동일한 질문에 대한 스택 오버플로에 대한 Jeff Atwood의 의견 참조하십시오 .


이 답변은 더 이상 정확하지 않습니다. 내 대답에서 볼 수 있듯이 당신은 아웃 바운드 규칙을 추가하여 7 + IIS에서 ETag를 변경할 수 있습니다 serverfault.com/a/528346/78230
AndrewPK

12

여러 서버의 콘텐츠를 제공하지 않는 한 전자 태그는 정상입니다. 하나의 서버에서만 서비스를 제공하는 경우 그대로 두십시오. 그들은 아프지 않습니다. YSlow가 이에 대해 불만을 표시하지 않으려면 규칙 세트 선택 요소 근처의 편집 단추 를 클릭 하고 YSlow (V2) 프로파일을 편집하십시오. "엔터티 태그 구성 (Etags)"옵션의 선택을 해제하십시오.


7
+1 YSlow는 "단순한"웹 사이트에 영향을 미치지 않는 많은 것들에 대해 불평합니다. (아니 YSlow, 나는 CDN이 필요없고 필요하지 않습니다. 이미 징징 거리십시오.)
Gerald Combs

규칙 세트 변경에 대해 참입니다.
MikeJ

11

YSlow는 그들이 틀렸다고 불평하지는 않지만 (그것이 말한 것임에도 불구하고) 필요하지 않다고 불평합니다. YSlow를 종료시키는 유일한 방법은 비활성화하는 것입니다.

좋은 점은 오늘 방금이 작업을 직접 수행 한 것입니다.

IIS 관리자를 열고 서버를 클릭 한 후 HTTP 응답 헤더로 이동하십시오. "추가 ..."버튼을 클릭하고 이름 아래에 다음을 입력하십시오.

ETag

(대소 문자 구분). 값 아래에

""

(즉, 두 개의 큰 따옴표)

그리고 ETags가 시작되었습니다!


다른 사람들이 지적했듯이 ETag를 제거해야한다는 것을 알고있는 경우에만 제거해야합니다. 많은 경우에, 이것은 사실이 아닙니다.
Bobby Jack

1
그럴 수도 있지만 문제의 사실은 정답이 질문에 올바르게 대답한다는 것입니다.
Mark Henderson

1
이 질문은 'IIS7이 어떻게 이러한 전자 태그를 올바르게 발급합니까?'라는 질문을 받았습니다. 귀하의 답변은 ETags 발행을 완전히 중단하는 것입니다. 이는 가능한 성능 저하 및 불필요합니다 (질문에 CDN 사용에 대한 언급은 없었습니다).
Bobby Jack

2
@Bobby : OP는 암시 적으로 " YSlow에 의해 정의 된대로 IIS7이 이러한 etag를 올바르게 발행하도록하려면 어떻게해야 합니까?" YSlow에 관한 한 "올바른"구성은 사용하지 않는 것입니다.
Kip

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_ETag하나 이상의 문자가 있고 값을 빈 문자열로 다시 쓰는 한 이름이 지정된 서버 변수와 일치 합니다.



1

이것을 더 잘 사용하십시오 :

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

3
서버 결함에 오신 것을 환영합니다! 매직 바이트는 확실히 좋지만 이것이 왜 올바른지 설명하면 다른 사람들이 그것을 읽는 것이 좋습니다.
Falcon Momot
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.