Правильно ли ставить сценарии на дне?
В рекомендациях по повышению эффективности веб-сайта http://developer.yahoo.com/performance/rules.html Стив Соудерс упомянул одно правило: "Переместить сценарии в конец". Это немного сбивает с толку. На самом деле, я замечаю, что на многих веб-страницах сценарий не помещается внизу, а YSlow все еще помечает букву A для этих страниц.
Итак, когда я должен следовать правилу "Поместить сценарии в нижней части"?
5 ответов
Когда пользователь запрашивает страницу с вашего сайта, страница HTML начинает потоковую передачу в браузер. Как только браузер обнаружит тег для внешнего изображения, сценария, файла CSS и т. Д., Он начнет загружать этот файл одновременно.
Если вы поместите свои скрипты внизу страницы, они будут загружены последними. Другими словами, HTML-контент / структура /css/images вашей страницы / приложения будет загружен первым, и что-то может появиться в браузере быстрее; Вашим пользователям не нужно ждать окончания загрузки скрипта, прежде чем они увидят что-то в вашем приложении.
Причина, по которой страницы со сценариями в верхней части страницы по-прежнему обозначаются буквой "А", заключается в том, что это не так важно, как другие улучшения производительности, которые могут быть сделаны.
Каждое правило взвешено, поэтому некоторые правила влияют на оценку ySlow больше, чем другие.
Я всегда ставлю сценарии внизу. Существует очень мало причин, по которым вам нужны скрипты в верхней части вашей страницы. Единственная причина, по которой я могу придумать, заключается в том, что вам нужно, чтобы ваш JavaScript выполнялся непосредственно перед чем-либо еще на странице, что довольно редко.
Иногда у вас нет выбора, кроме как разместить сценарии в определенном месте на странице. Однако, если вы поместите скрипты внизу страницы, браузер не прервет рендеринг, чтобы загрузить движок JS для обработки вашего скрипта (что может быть дорогостоящим, если у вас есть циклы, запущенные большое количество раз) и, вероятно, отобразит ранний просмотр страницы раньше.
Код может ссылаться на объекты DOM, которые еще не были созданы, это самая очевидная причина, о которой я могу подумать.
Я не уверен, что это проблема с производительностью (может быть), но я присутствовал на презентации, представленной Microsoft, и докладчик сказал, что веб-пауки иногда читают только первое количество символов на веб-странице, чтобы проиндексировать его. Таким образом, если у вас большое количество сценариев, ваш контент может быть недоступен и проиндексирован неправильно (и рейтинг страницы вашего сайта будет не таким высоким).