In HTTP-Header-Fehler nicht angegebener Zeichensatz

15

Beim Testen dieser Seite mit Seitengeschwindigkeit erhalte ich den folgenden Specify a character setFehler:

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

Das Content-TypeTag ist vorhanden und die Seite wurde auch mit UTF-8-Codierung gespeichert. Woher kommt der Fehler?

Alex
quelle
wo in Apache? welches verzeichnis

Antworten:

19

Es bezieht sich auf Antwortheader und nicht auf den Dokumenttext ("Content-Type-Tag").

Wenn Sie die Antwortheader Ihrer Seite mit einem HTTP-Debugger überprüfen (z. B. Net Panel von Firebug für Firefox oder eine ähnliche Registerkarte der Entwicklertools in Google Chrome / Internet Explorer / Safari / Opera), wird folgende Zeile angezeigt:

Content-Type: text/html

Zur gleichen Zeit, wenn Sie das gleiche für diese Seite überprüfen , werden Sie sehen:

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

Die Seitengeschwindigkeit bezieht sich auf den fehlenden Teil. Mit richtigem Zeichensatz in Header wird in der Tat der Seite beschleunigt Rendering ein wenig . Wenn im Antwortheader ein falscher Zeichensatz angegeben ist (oder überhaupt kein Zeichensatz), muss der Browser die Seite scannen / interpretieren, bis er die richtige Zeichensatzdeklaration (die <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Zeile) findet, und dann den Renderprozess neu starten, wenn sich der Zeichensatz vom des Browsers unterscheidet Voreinstellung.

Die Leistungseinbußen sind nicht groß - für den Benutzer ist sie unbemerkt, es sei denn, es wird wirklich alte / langsame Hardware verwendet (obwohl sie für jeden Browser und jede Browserversion unterschiedlich ist). Vielleicht gibt es einige andere "Strafen", die direkt damit zusammenhängen, aber ich persönlich kenne sie nicht.

Festsetzung: Wenn Sie diesen Header selbst (in Ihrem PHP-Skript) generieren, müssen Sie ihn so ändern, dass er auch den Zeichensatz enthält. Wenn Ihr Skript solche Header-Manipulationen nicht ausführt, liegt ein Fehler in der Serverkonfiguration vor.

LazyOne
quelle
Ich habe gerade hinzugefügt header('Content-type: text/html; charset=UTF-8');. Danke vielmals!
Alex
6
Sie können auch die Response - Header mit ansehen curl --head $url. Der Standardzeichensatz kann in Apache durch Hinzufügen AddDefaultCharset utf-8einer Konfigurationsdatei wie .htaccess festgelegt werden.
Lri
+1 für eine klare Erklärung, wunderte sich oft und war verwirrt. Gelöst mit htaccess AddDefaultCharset Addition
Malachi
Sollte nicht <meta charset="utf+8">ausreichen?
Daniel Springer