O yslow diz que os etags estão configurados incorretamente. como configurar etags corretamente no IIS7?


20

executando o ySlow em um site que eu suporte, notei que ele relatava que as etags estão configuradas incorretamente para as imagens do site (por exemplo, * .jpg, * .png, * .gif). Alguém pode ajudar a explicar o que devo fazer para que o IIS7 emita essas etags corretamente?

Respostas:



12

Etags são válidas, desde que você não sirva conteúdo de vários servidores. Se você servir apenas de um servidor, deixe-os lá. Eles não machucam. E se você não quer YSlow para reclamar sobre eles, em seguida, clique no Editar botão perto dos conjuntos de regras selecionar elemento e editar o perfil YSlow (V2). Basta desmarcar a opção "Configurar tags de entidade (Etags)".


7
+1 O YSlow reclama de muitas coisas que não afetam sites "meros mortais". (Sem YSlow, eu não tenho e não precisa de um CDN Por favor, saia já choramingar..)
Gerald Combs

É verdade sobre a alteração do conjunto de regras.
MikeJ

11

O YSlow não está reclamando que eles estão errados (mesmo que seja o que diz), mas está reclamando que eles não são necessários. A única maneira de fazer o YSlow se calar é desabilitá-los.

O bom é que eu mesmo fiz isso hoje cedo!

Abra seu gerenciador do IIS, clique no servidor e vá para HTTP Response Headers. Clique no botão "Adicionar ..." e, em nome, digite:

ETag

(maiúsculas e Minúsculas). Em Valor, insira

""

(isso é duas aspas duplas)

E ETags vão embora!


Como outros apontam, você só deve remover ETags se souber; em muitos casos, esse não será o caso.
Bobby Jack

11
Pode ser esse o caso, mas o fato é que a resposta responde corretamente à pergunta.
Mark Henderson

11
A pergunta feita 'como faço para o IIS7 emitir essas etags corretamente?'. Sua resposta foi parar de emitir ETags completamente, o que é um possível impacto no desempenho e provavelmente desnecessário (não houve menção ao uso de CDN na pergunta).
Bobby Jack

2
@ Bobby: o OP está perguntando implicitamente "como faço para que o IIS7 emita essas etags corretamente, conforme definido pelo YSlow ?". e a única configuração "correta", no que diz respeito ao YSlow, é desativá-los.
Kip

11
@ Kip, não, a parte implícita está implícita e você não pode adivinhar. Mas, presumindo que o OP seja uma pessoa razoável, ele provavelmente quis dizer "de acordo com o YSlow, a configuração parece subótima, como posso torná-la ideal?" - E então essa resposta é um pouco engraçada. É como "por que meu teste de unidade reclama?" - "Basta excluir o teste de unidade e ele não irá mais reclamar!"
chiccodoro


3

No iis 6, você pode adicionar um cabeçalho personalizado para 'ETag' = ""

No iis 7, adicione uma regra de reescrita de saída da seguinte maneira:

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

O IIS 7 substituirá cabeçalhos personalizados e todas as outras soluções propostas em várias outras respostas relacionadas ao mesmo problema. Regras de saída são o único item que parece funcionar, pois substitui tudo o que é definido pouco antes de retornar ao usuário. Essa regra de saída proposta corresponde a qualquer variável do servidor nomeada RESPONSE_ETag, desde que o valor de RESPONSE_ETagtenha um ou mais caracteres e reescreva o valor como uma sequência vazia.



1

Melhor usar isso:

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

3
Bem-vindo à falha do servidor! Embora os bytes mágicos sejam certamente bons, é impressionante para outras pessoas que o leem, se você explicar por que isso está correto.
Falcon Momot
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.