Juego de caracteres no especificado en error de encabezados HTTP

15

Al probar esta página con Page Speed, aparece el Specify a character seterror:

The following resources have no character set specified in their HTTP headers. Specifying a character set in HTTP headers can speed up browser rendering.

La Content-Typeetiqueta está presente y la página también se guardó con codificación UTF-8, entonces, ¿de dónde viene el error?

Alex
fuente
donde en apache cual directorio?

Respuestas:

19

Se refiere a Encabezados de respuesta y no al cuerpo del documento ("Etiqueta de tipo de contenido").

Si marca los Encabezados de respuesta de su página con cualquier depurador HTTP (por ejemplo, el panel Net de Firebug para Firefox, o una pestaña similar de Herramientas para desarrolladores en Google Chrome / Internet Explorer / Safari / Opera), verá esta línea:

Content-Type: text/html

Al mismo tiempo, si marca lo mismo para esta página, verá:

Content-Type: text/html; charset=utf-8

La velocidad de la página se refiere a la parte que falta. Tener el juego de caracteres correcto presente en los encabezados de hecho acelerará la representación de la página un poco . Con un juego de caracteres incorrecto especificado en el encabezado de respuesta (o ningún juego de caracteres), el navegador debe escanear / interpretar la página hasta que encuentre la declaración correcta del juego de caracteres (la <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />línea) y luego reiniciar el proceso de representación si el juego de caracteres es diferente del del navegador Configuración predeterminada.

La penalización de rendimiento no es grande en absoluto: para el usuario es imperceptible a menos que se use hardware realmente antiguo / lento (aunque difiere para cada navegador y versión de navegador). Tal vez hay otras "sanciones" que están directamente relacionadas con esto, pero personalmente no estoy al tanto de ellas.

Solución: si genera este encabezado usted mismo (en su script PHP), entonces necesita modificarlo para incluir también el juego de caracteres. Si su script no realiza tales manipulaciones de encabezado, entonces es un problema de configuración incorrecta del servidor.

LazyOne
fuente
Acabo de agregar header('Content-type: text/html; charset=UTF-8');. ¡Muchas gracias!
Alex
66
También puede ver los encabezados de respuesta con curl --head $url. El conjunto de caracteres predeterminado se puede especificar en Apache agregando AddDefaultCharset utf-8a un archivo de configuración como .htaccess.
Lri
+1 para una explicación clara, a menudo se preguntaba esto y se confundía. Resuelto con la adición de htaccess AddDefaultCharset
Malachi
¿No debería ser <meta charset="utf+8">suficiente?
Daniel Springer