Conjunto de caracteres não especificado no erro de cabeçalhos HTTP

15

Ao testar esta página com o Page Speed, recebo o Specify a character seterro:

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

A Content-Typetag está presente e a página foi salva com a codificação UTF-8 também; portanto, de onde vem o erro?

Alex
fonte
onde no apache? qual diretório?

Respostas:

19

Refere-se aos cabeçalhos de resposta e não ao corpo do documento ("tag Content-Type").

Se você verificar os Cabeçalhos de resposta da sua página com qualquer depurador HTTP (por exemplo, painel Net do Firebug for Firefox ou guia semelhante das Ferramentas do desenvolvedor no Google Chrome / Internet Explorer / Safari / Opera), você verá esta linha:

Content-Type: text/html

Ao mesmo tempo, se você verificar o mesmo para esta página, verá:

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

A velocidade da página refere-se à peça que falta. Tendo correta conjunto de caracteres presentes em cabeçalhos vai realmente acelerar o processamento da página um pouco . Com o conjunto de caracteres incorreto especificado no cabeçalho de resposta (ou nenhum conjunto de caracteres), o navegador precisa varrer / interpretar a página até encontrar a declaração correta do conjunto de caracteres (a <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />linha) e reiniciar o processo de renderização se o conjunto de caracteres for diferente do navegador configuração padrão.

A penalidade de desempenho não é grande de todo - para o usuário, é imperceptível, a menos que um hardware realmente velho / lento esteja em uso (embora seja diferente para cada navegador e versão do navegador). Talvez haja outras "penalidades" diretamente relacionadas a isso, mas eu pessoalmente não as conheço.

Correção: Se você gerar esse cabeçalho você mesmo (no seu script PHP), precisará alterá-lo para incluir também o charset. Se o seu script não faz essas manipulações de cabeçalho, é um problema de configuração incorreta do servidor.

LazyOne
fonte
Acabei de adicionar header('Content-type: text/html; charset=UTF-8');. Muito obrigado!
Alex
6
Você também pode visualizar os cabeçalhos de resposta com curl --head $url. O conjunto de caracteres padrão pode ser especificado no Apache adicionando AddDefaultCharset utf-8a um arquivo de configuração como .htaccess.
Lri
+1 para uma explicação clara, muitas vezes se perguntava isso e ficava confuso. Resolvido com adição htaccess AddDefaultCharset
Malachi
Não deveria ser <meta charset="utf+8">suficiente?
Daniel Springer