Set di caratteri non specificato nell'errore delle intestazioni HTTP


15

Durante il test di questa pagina con Page Speed, viene visualizzato l' Specify a character seterrore:

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

Il Content-Typetag è presente e la pagina è stata salvata anche con la codifica UTF-8, quindi da dove viene l'errore?


dove in apache? quale directory?

Risposte:


19

Si riferisce alle intestazioni di risposta e non al corpo del documento ("tag Content-Type").

Se controlli le intestazioni di risposta della tua pagina con qualsiasi debugger HTTP (ad esempio, pannello Net di Firebug per Firefox o scheda simile di Strumenti per sviluppatori in Google Chrome / Internet Explorer / Safari / Opera), vedrai questa riga:

Content-Type: text/html

Allo stesso tempo, se controlli lo stesso per questa pagina, vedrai:

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

La velocità della pagina si riferisce alla parte mancante. Avere il set di caratteri corretto presente nelle intestazioni accelera infatti il ​​rendering della pagina un po ' . Con un set di caratteri errato specificato nell'intestazione della risposta (o nessun set di caratteri), il browser deve scansionare / interpretare la pagina fino a trovare la dichiarazione del set di caratteri corretta (la <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />riga) e quindi riavviare il processo di rendering se il set di caratteri è diverso dal browser impostazione predefinita.

La penalità prestazionale non è affatto importante - per l'utente è impercettibile a meno che non sia in uso un hardware molto vecchio / lento (anche se differisce per ciascun browser e versione del browser). Forse ci sono altre "penalità" che sono direttamente correlate a questo, ma personalmente non ne sono consapevole.

Correzione: se si genera questa intestazione (nello script PHP), è necessario modificarla per includere anche il set di caratteri. Se lo script non esegue tali manipolazioni dell'intestazione, si tratta di un problema di configurazione errata del server.


Ho appena aggiunto header('Content-type: text/html; charset=UTF-8');. Molte grazie!
Alex

6
Puoi anche visualizzare le intestazioni di risposta con curl --head $url. Il set di caratteri predefinito può essere specificato in Apache aggiungendo AddDefaultCharset utf-8a un file di configurazione come .htaccess.
Lri

+1 per una chiara spiegazione, spesso me lo sono chiesto ed ero confuso. Risolto con htaccess AddDefaultCharset aggiunto
Malachi il

Non dovrebbe <meta charset="utf+8">bastare?
Daniel Springer,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.