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.