Поместить CSS в заголовок документа, но у меня нет заголовка?

Согласно руководству по стилю Google, необязательные теги, такие как <head>, следует опускать.

http://google-styleguide.googlecode.com/svn/trunk/htmlcssguide.xml#Optional_tags

Однако это заставляет Google PageSpeed ​​сказать мне:

CSS в теле документа отрицательно влияет на производительность рендеринга. http://site.com содержит CSS в теле документа: 1 блок(ы) стилей в теле должен быть перемещен в глава документа.

Правильно, так что же делать?

Спасибо.


person Harry    schedule 25.05.2012    source источник


Ответы (3)


PageSpeed ​​ненадежен в таких вопросах. Вы должны сами проанализировать, правильна ли структура вашего документа. Используя HTML 4.01 и валидатор, вы сразу увидите, появляется ли какой-то элемент style внутри body, так как там это ошибка разметки (хотя и там он работает).

Страница http://site.com, упомянутая в вашей цитате, не имеет этой проблемы (это XHTML, без пропусков тегов). ). Пожалуйста, опубликуйте реальный URL-адрес или, по крайней мере, используйте псевдодомен .example, чтобы указать, что URL-адрес является фиктивным.

Не видя реальной страницы, невозможно проанализировать проблему, но в целом Google PageSpeed, похоже, выдает ложные комментарии. Кажется, что он работает непоследовательно, но, по крайней мере, в некоторых случаях он явно неправильно анализирует документ. Например, следующий код вызвал сообщение:

<!doctype html>
<title>foo</title>
<style></style>
<h1>foo</h1>

Здесь нет никакой двусмысленности: элемент style находится в элементе head (и именно так браузеры разбирают документ, и поисковые системы здесь не имеют большого значения), хотя PageSpeed ​​утверждает обратное.

Я пытался добавить пропущенные теги, но безрезультатно, пока внезапно PageSpeed ​​не перестал выдавать сообщение, и теперь документ выше получает чистый отчет. Я пришел к выводу, что PageSpeed ​​работает недетерминировано, возможно, из-за его агрессивного кэширования.

person Jukka K. Korpela    schedule 25.05.2012
comment
спасибо, у меня в основном есть ваш пример. Значит, скорость страницы неверна? Полезно знать, я думаю. - person Harry; 27.05.2012

Эта ссылка сообщает вам, при каких УСЛОВИЯХ некоторые теги могут быть опущены.

http://www.whatwg.org/specs/web-apps/current-work/multipage/syntax.html#syntax-tag-omission

Но будьте осторожны: пропуск тега не означает исключения элементов.

В вашем случае ‹head› не обязателен (даже html). Просто сделать

<!DOCTYPE html>     
  <link rel="stylesheet" href="pathTo.css">

Вы можете взглянуть на

Нужно ли писать теги HEAD, BODY и HTML?

Для читателей, которые могут захотеть поэкспериментировать, сохраните следующий код в файл, прочитайте его и проверьте с помощью такого инструмента, как firebug.

<!DOCTYPE html>     
 <meta http-equiv="Content-type" content="text/html; charset=utf-8">
 <title>Page Title</title>
 <link rel="stylesheet" href="pathTo.css">
 <script>var a = 0;</script><!-- placed in head -->

 <div>any html text or tags</div>
 <script> var b = 1</script> <!-- placed in body -->
person stefan bachert    schedule 25.05.2012

Из спецификации:

Начальный тег элемента body может быть опущен, если элемент пуст или если первое, что находится внутри элемента body, не является пробелом или комментарием, за исключением случаев, когда первое, что находится внутри элемента body, является скриптом. или элемент стиля.

Это кажется наиболее вероятной причиной вашей проблемы, так как это делает начальный тег тела необязательным.

(Предполагается, что вы следовали инструкции по удалению ВСЕХ необязательных тегов, а не только выбранных)

person Niet the Dark Absol    schedule 25.05.2012