yslow dice que los etags están mal configurados. ¿Cómo configurar etags correctamente en IIS7?

20

Al ejecutar ySlow en un sitio web que apoyo, noté que informaba que los etags están mal configurados para las imágenes del sitio (por ejemplo, * .jpg, * .png, * .gif). ¿Alguien puede ayudar a explicar lo que tengo que hacer para que IIS7 emita estos etags correctamente?

MikeJ
fuente

Respuestas:

12

Los Etags están bien siempre y cuando no sirva contenido de múltiples servidores. Si solo sirve desde un servidor, déjelos allí. No duelen Y si no desea que YSlow se queje de ellos, haga clic en el botón Editar cerca del elemento de selección Conjuntos de reglas y edite el perfil de YSlow (V2). Simplemente desmarque la opción "Configurar etiquetas de entidad (Etags)".

Ionuț G. Stan
fuente
77
+1 YSlow se queja de que muchas cosas no afectan los sitios web "simples mortales". (No, YSlow, no tengo y no necesito un CDN. Por favor, deja de lloriquear ya)
Gerald Combs
Es cierto sobre el cambio de conjunto de reglas.
MikeJ
11

YSlow no se queja de que están equivocados (aunque eso es lo que dice), pero se queja de que no son necesarios. La única forma de hacer que YSlow se calle sobre esto es deshabilitarlos.

Lo bueno es que ¡acabo de hacer esto yo mismo hoy!

Abra su administrador IIS, haga clic en el servidor y vaya a Encabezados de respuesta HTTP. Haga clic en el botón "Agregar ..." y, debajo del nombre, ingrese:

ETag

(distingue mayúsculas y minúsculas). En Valor, ingrese

""

(eso es dos comillas dobles)

¡Y los Eags se fueron!

Mark Henderson
fuente
Como otros señalan, solo debe eliminar ETags si sabe que lo necesita; En muchos casos, este no será el caso.
Bobby Jack
1
Ese puede ser el caso, pero el hecho es que la respuesta responde correctamente la pregunta.
Mark Henderson
1
La pregunta fue "¿cómo consigo que IIS7 emita estos etags correctamente?". Su respuesta fue dejar de emitir ETag por completo, lo que es un posible impacto en el rendimiento y probablemente innecesario (no se mencionó el uso de CDN en la pregunta).
Bobby Jack
2
@Bobby: el OP pregunta implícitamente "¿cómo hago para que IIS7 emita estos etags correctamente como lo define YSlow ?". y la única configuración "correcta", en lo que respecta a YSlow, es deshabilitarlos.
Kip
1
@Kip, no, la parte implícita es implícita y no puedes adivinarlo. Pero suponiendo que el OP es una persona razonable, probablemente quería decir "según YSlow, la configuración parece ser subóptima, ¿cómo puedo hacerla óptima?" - Y entonces esta respuesta es un poco divertida. Es como "¿por qué se queja mi unidad de prueba?" - "¡Simplemente borre la prueba de la unidad y ya no se quejará!"
chiccodoro
3

En iis 6, puede agregar un encabezado personalizado para 'ETag' = ""

En iis 7, agregue una regla de reescritura saliente de la siguiente manera:

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

IIS 7 sobrescribirá los encabezados personalizados y todas las demás soluciones propuestas en otras respuestas relacionadas con el mismo problema. Las reglas de salida son el único elemento que parece funcionar, ya que sobrescribe todo lo que se establece justo antes de que se devuelva al usuario. Esta regla de salida propuesta coincide con cualquier variable de servidor nombrada RESPONSE_ETagsiempre que el valor de RESPONSE_ETagtenga uno o más caracteres y reescriba el valor para que sea una cadena vacía.

AndrewPK
fuente
1

Mejor use esto:

<outboundRules>
  <rule name="Remove ETag">
    <match serverVariable="RESPONSE_ETag" pattern="(.*)\:(.*)" />
    <action type="Rewrite" value="{R:1}" />
  </rule>
</outboundRules>
usuario197693
fuente
3
¡Bienvenido a Server Fault! Si bien los bytes mágicos son ciertamente buenos, es increíble para otras personas que lo leen si explican por qué esto es correcto.
Falcon Momot