Набор символов не указан в ошибке заголовков HTTP

15

При тестировании этой страницы с Page Speed, я получаю сообщение Specify a character setоб ошибке:

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

Content-TypeТег присутствует и страница была сохранена с UTF-8 кодировке, а, так , где ошибка приходит?

Alex
источник
где в апаче? какой каталог?

Ответы:

19

Это относится к заголовкам ответа, а не к телу документа («тег Content-Type»).

Если вы проверяете заголовки ответа вашей страницы с помощью любого отладчика HTTP (например, сетевой панели Firebug для Firefox или аналогичной вкладки « Инструменты разработчика» в Google Chrome / Internet Explorer / Safari / Opera), вы увидите следующую строку:

Content-Type: text/html

В то же время, если вы проверите то же самое для этой страницы, вы увидите:

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

Скорость страницы относится к отсутствующей части. Имея правильный набор символов , присутствующий в заголовках действительно ускорить рендеринг страницы , немного . Если в заголовке ответа указан неправильный набор символов (или вообще нет набора символов), браузер должен сканировать / интерпретировать страницу, пока не найдет правильное объявление набора символов ( <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />строку), а затем повторно запустить процесс рендеринга, если набор символов отличается от набора символов браузера. настройки по умолчанию.

Нарушение производительности совсем не велико - для пользователя оно незаметно, если не используется действительно старое / медленное оборудование (хотя оно отличается для каждого браузера и версии браузера). Может быть, есть и другие «штрафы», которые напрямую связаны с этим, но я лично о них не знаю.

Исправление: если вы сгенерируете этот заголовок самостоятельно (в своем PHP-скрипте), то вам нужно изменить его, чтобы включить и кодировку. Если ваш скрипт не выполняет такие манипуляции с заголовками, то это проблема неправильной конфигурации сервера.

LazyOne
источник
Я только добавил header('Content-type: text/html; charset=UTF-8');. Большое спасибо!
Алекс
6
Вы также можете просмотреть заголовки ответа с помощью curl --head $url. Кодировку по умолчанию можно указать в Apache, добавив AddDefaultCharset utf-8в файл конфигурации, например, .htaccess.
Lri
+1 за понятное объяснение, часто задавался вопросом об этом и путался. Решено с добавлением htaccess AddDefaultCharset
Малахи
Не должно <meta charset="utf+8">хватить?
Даниэль Спрингер,