Набір символів не вказано в помилці заголовків HTTP


15

Під час тестування цієї сторінки за допомогою швидкості сторінки я отримую 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 кодуванні, а, так , де помилка приходить?


де в апачі? який каталог?

Відповіді:


19

Він посилається на заголовки відповідей, а не на документ документа ("Тег типу вмісту").

Якщо ви перевірите Заголовки відповідей вашої сторінки за допомогою будь-якого налагоджувача HTTP (наприклад, Net панелі 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-скрипті), то вам потрібно змінити його, щоб він також включав шаблони. Якщо ваш скрипт не робить таких маніпуляцій із заголовком, то це проблема помилок конфігурації сервера.


Я щойно додав header('Content-type: text/html; charset=UTF-8');. Дуже дякую!
Олексій

6
Ви також можете переглянути заголовки відповідей за допомогою curl --head $url. Набір шаблонів за замовчуванням можна вказати в Apache, додавши AddDefaultCharset utf-8до конфігураційного файлу, наприклад .htaccess.
Лрі

+1 для чіткого пояснення, часто дивувався цьому і плутався. Додано htaccess AddDefaultCharset, доданий
Малахій

Не повинно <meta charset="utf+8">вистачити?
Даніель Спрінгер
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.